" useLegacyV2RuntimeActivationPolicy =真"使用Process.Start加载应用程序时无法正常工作

时间:2012-01-27 17:00:11

标签: c# .net-4.0 .net-2.0 version smo

我有一个使用SQL管理对象(Microsoft.SqlServer.Smo.dll)的应用程序,为了使其在.NET 4中运行,我需要在app.config文件中插入此块:

<startup useLegacyV2RuntimeActivationPolicy="true">
   <supportedRuntime version="v4.0"/>
</startup>  

它可以工作,但是如果我使用

从另一个应用程序执行此应用程序
System.Diagnostics.Process.Start("myApplicationThatUsesSmo.exe")

它不起作用。 LegacyV2Runtime未激活。

我使用了这个实现:

http://reedcopsey.com/2011/09/15/setting-uselegacyv2runtimeactivationpolicy-at-runtime/

检查LegacyV2Runtime是否已加载,而不是。如果我直接运行应用程序,或者从VS2010内部运行应用程序,则测试通过并且Smo工作。

任何人都知道我错过了什么?

1 个答案:

答案 0 :(得分:0)

没关系。在“myApplicationThatUsesSmo.exe”正在启动的文件夹中确实缺少文件“myApplicationThatUsesSmo.exe.config”。

“myApplicationThatUsesSmo.exe”被设置为“myApplicationThatCallsProcessStart.exe”的引用,因此它被复制到“myApplicationThatCallsProcessStart.exe”输出文件夹中。但它的配置文件不是。有一个构建事件处理这个文件,但有一些是如何删除它,而不是停止工作。

我会在这里回答这个问题,以防其他人遇到同样的情况。