2012-01-27 147 views
0

我有一個使用SQL管理對象(Microsoft.SqlServer.Smo.dll)的應用程序,爲了使它在.NET 4中工作,我需要在app.config文件中插入塊:「useLegacyV2RuntimeActivationPolicy = true」使用Process.Start加載應用程序時不起作用

<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

好吧,很奇怪,當你使用Process.Start()時,app.config文件不起作用當然沒有什麼好的理由。它以Windows的相同方式啓動可執行文件。使用Fuslogvw.exe並記錄所有綁定以嘗試獲取一些洞察。 – 2012-01-27 18:41:28

回答

0

沒關係。文件「myApplicationThatUsesSmo.exe.config」在啓動「myApplicationThatUsesSmo.exe」的文件夾中確實缺失。

「myApplicationThatUsesSmo.exe」被設置爲「myApplicationThatCallsProcessStart.exe」的引用,因此它被複制到「myApplicationThatCallsProcessStart.exe」輸出文件夾中。但它的配置文件不是。有一個應對這個文件的構建事件,但有些是如何被刪除的,而不是停止工作的東西。

我會讓這個答案在這裏,以防其他人面對同樣的情況。

相關問題