我有一个使用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工作。
任何人都知道我错过了什么?
答案 0 :(得分:0)
没关系。在“myApplicationThatUsesSmo.exe”正在启动的文件夹中确实缺少文件“myApplicationThatUsesSmo.exe.config”。
“myApplicationThatUsesSmo.exe”被设置为“myApplicationThatCallsProcessStart.exe”的引用,因此它被复制到“myApplicationThatCallsProcessStart.exe”输出文件夹中。但它的配置文件不是。有一个构建事件处理这个文件,但有一些是如何删除它,而不是停止工作。
我会在这里回答这个问题,以防其他人遇到同样的情况。