環境:
在Windows Server 2008 R2 上安裝Visual Studio 2010,並使用C#寫Windows Form介面,利用Powershell控制System Center Virtual Machine Manager 2012 RC
錯誤訊息 1:
無法載入檔案或組件 'TraceWrapper, Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其相依性的其中之一。 系統找不到指定的檔案。
Could not load file or assembly ‘TraceWrapper, Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35′ or one of its dependencies. An attempt was made to load a program with an incorrect format.
發生原因:
一般錯誤出現於64位元的系統上加載32位元文件,或者32位元系統加載64位元文件;問題來了,作業系統是64位元,加載的TraceWrapper.dll也是64位元的,為什麼還會出現錯誤?原因在於VS2010是32位元程式,從而由它起來的所有程序都是32位元的,不信您可以叫出工作管理員看看:devenv.exe *32。這種情況下,所有的程序都運行於32位元模式,在這種模式下去讀取64位元的TraceWrapper.dll自然就出現錯誤了。
解決方式:
在專案中加入參考:32位元的TraceWrapper.dll
參考路徑:*\SCVMM2012.EVAL.RC\i386\Setup\TraceWrapper.dll
錯誤訊息 2:
混合模式組件是針對版本 'v2.0.50727' 的執行階段建置的,無法在沒有其他組態資訊的情況下載入 4.0 執行階段中。
參考資料1:http://msdn.microsoft.com/zh-tw/library/bbx34a2h(v=vs.100).aspx
參考資料2:http://msdn.microsoft.com/zh-tw/library/ff770241(v=vs.100).aspx
解決方式:
在專案中的應用程式組態檔 app.config加入下列紅色程式:
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name=*"
connectionString="Data Source=*.*.*.*;Initial Catalog=*;User ID=*;Password=*"
providerName="System.Data.SqlClient" />
</connectionStrings>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
程式說明:
使用 .NET Framework 4 為啟動原則,並相容於舊版 .NET Framework 來建立混合模式組件。
現在如果當程序在.NET4.0環境下要使用.NET2.0及.NET3.5的程序時就必須將useLegacyV2RuntimeActivationPolicy設置為true,同時還要注意,需要在startup配置節的字節中添加supportedRuntime配置節,並指定為“v4.0”,表示使用.NET4.0運行時來運行程序。
備註:
若<configuration></configuration>中有其他設定,記得要將此段程式加至下方才有作用。
沒有留言:
張貼留言