【发布时间】:2014-04-27 16:57:05
【问题描述】:
在 Visual Studio 2013 中,将两个项目作为两个进程同时启动是很简单的。
但要部署,我需要让一个进程 (A) 启动另一个进程 (B)。然后当A退出时,它需要停止B。
我看到了 System.Diagnostics.Process 类和示例。 http://msdn.microsoft.com/en-us/library/vstudio/system.diagnostics.process
但不确定 (1) 如何知道在哪条路径上找到 B。 (2) 在 A 的哪里放代码来停止 B。
更多细节:
A 是面向 .Net 4.5.1 的 64 位 WinForms 应用程序。 (用 VB 编写,但显示 C# 的答案同样有用。)
B 是针对 .Net 3.5 的 32 位混合模式 DLL 的 .Net 包装器。包装器来源是我的; 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?
【问题讨论】:
标签: c# vb.net process named-pipes