从2.0应用程序启动外部4.0进程

时间:2012-01-26 11:16:04

标签: c# .net c#-4.0 interop c#-2.0

有人提到使用COM互操作从2.0应用程序中使用4.0库。我的要求略有不同,因为我不想将类型暴露给我的2.0应用程序,但我在2.0应用程序中有一个Diagnostics.Process.Start(....)命令,直到现在,它在其他地方启动了一个外部EXE本地驱动器也是在2.0框架下编译的。

外部EXE已经升级到使用框架4.0,并且Diagnostics.Process.Start不再有效,似乎是出于这个原因。

我试图在.csproj文件下更改被调用的EXE的框架类型,重新编译并尝试了但仍然没有乐趣,不确定现在它是否在VS2010下它不可逆转地改为不再与2.0兼容。我不会想到这会是一个问题,就像我说我不是在库中调用类型一样,我只是使用Diagnostics.Process.Start来启动一个外部EXE,这当然不应该是什么版本的框架它是在?

下编译的

有没有人经历过这样的事情?

1 个答案:

答案 0 :(得分:1)

如果您要为4.0可执行文件启动一个全新的流程,那么框架版本应该是无关紧要的。这两个过程是由不同的环境分开的。您是否可以指定尝试启动新的4.0 EXE时遇到的错误?

如果在新项目中将目标框架更改为2.0也会失败,我猜它是另一回事。也许代码访问安全性或一般权限?

编辑:如果您没有收到明确的错误消息,但只是看到您的4.0 EXE在没有警告的情况下启动和关闭,请尝试使用ProcMonDbgView等工具来捕获意外消息或添加呼叫到4.0进程的主入口点的System.Diagnostics.Debugger.Attach(),进入调试并看看发生了什么。