【问题标题】:vb or c#: start second project in process and kill it when first process exits - how find second exe?vb 或 c#:在进程中启动第二个项目并在第一个进程退出时将其终止 - 如何找到第二个 exe?
【发布时间】: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


    【解决方案1】:

    将两个项目的 .exe 文件放在同一个位置的简单方法(这样第二个 exe 的路径就很简单了):在每个项目中,在项目属性中,在编译选项下,更改输出目录(或路径) 从 "bin" 到 "..\bin"。由于这两个项目是一个解决方案的子文件夹,因此生成的“bin”文件夹位于其父文件夹中 - .exe 最终都位于该父“bin”文件夹中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      • 2015-05-10
      • 1970-01-01
      • 2019-12-16
      • 2010-10-23
      相关资源
      最近更新 更多