vb或c#:启动进程中的第二个项目,并在第一个进程退出时终止它-如何找到第二个exe

本文关键字:第二个 进程 exe 终止 退出 何找 第一个 启动 vb 项目 | 更新日期: 2023-09-27 18:00:20

在Visual Studio 2013中,将两个项目设置为两个进程同时启动是很简单的。

但是,要进行部署,我需要一个进程(A)启动另一个(B)。然后当A退出时,它需要停止B。

我看到了系统。诊断。流程类和示例。http://msdn.microsoft.com/en-us/library/vstudio/system.diagnostics.process

但不确定(1)如何知道在什么路径上找到B。(2)在A的哪里放代码来阻止B。

更多详细信息:

A是一个64位WinForms应用程序目标。净4.5.1。(用VB编写,但显示C#的答案同样有用。)

B是a。以32位混合模式DLL为目标的Net包装器。净额3.5。包装器的来源是我的;DLL没有源。(这是一个不再受支持的第三方库,没有64位的等效库。)(由于是混合模式,最初是2.0,如果尝试针对比.Net 3.5更新的版本,它会抱怨。)

通过命名管道进行通信。

这是客户端(a)/服务器(B)的情况,但只有一个客户端:(B)仅作为(a)的一部分存在。(B) 分离只是因为(A)需要是64位,而(B)是32位混合模式(最初是.Net 2.0),没有可用的源代码,也没有供应商支持来重建它。

*更新*

关于"(2)在A中的何处放置代码以停止B"——我发现由于它是一个WinForms,我制作了一个自定义的Close来覆盖默认的窗口Close方法。

因此,我现在所缺少的是了解为B走哪条路。我有一个解决方案,其中包括两个项目。每个项目都在一个子文件夹中。有没有一种简单的方法可以让(B)将其exe复制到(A)的bin文件夹?或者其他方法来定位(B)的exe?

vb或c#:启动进程中的第二个项目,并在第一个进程退出时终止它-如何找到第二个exe

将两个项目的.exe文件放在同一位置的简单方法(这样第二个exe的路径就非常简单):在每个项目中,在项目属性的"编译"选项下,将输出目录(或路径)从"bin"更改为"..''bin"。由于这两个项目是一个解决方案的子文件夹,由此产生的"bin"文件夹位于其父文件夹中——.exe都位于该父文件夹中。