2013-03-25 84 views
3

比方說,我希望我的.NET 2.0的exe來無論是在運行:在任何框架運行.NET 2.0的應用程序

  • XP安裝
  • XP僅安裝了.NET 4.0只.NET 2.0(或Windows 8中不已NET 2.0啓用)

一種解決方案是創建一個MyProgram.exe.config文件,我寫這篇文章enties

<supportedRuntime version="v4.0.30319"/> 
<supportedRuntime version="v2.0.50727"/> 

可以在exe中嵌入這些條目(或MyProgram.exe.config)? 謝謝。

回答

0

一個.NET .exe稱爲assembly .Additionally於程序的數據它包含了你的程序的元信息,所以CLR可以使用它,所以你可以像reflection執行的東西。
您可以在大會中提供信息,但恐怕你無法輕鬆做到你想做的事。您需要對.NET的安裝版本進行.exe檢查,並對其作出反應。另外,你不要忘記,當你創建一個程序集時,你需要指定一個目標框架,即.NET 3.5,.NET 4.0等......所以.NET 2.0的程序集將運行在.NET 4.0上無論如何由於向下兼容性。

請參閱here對於assemblies以及它們如何使用以及here對於System.Reflection.Assembly-類。

0

決定使用哪個運行庫在您自己的代碼加載之前完成。這意味着您無法將supportedRuntime元素嵌入到您自己的代碼中。

但是,您通常不必。假設您可以將您的項目(包括您需要參考的所有第三方項目)設置爲全部到足夠低的目標框架,它們也將在任何更高級的框架中執行。最好在構建時使用的那個相同。

如果您使用混合模式程序集(C++/CLI),則可能會出現少數潛在問題之一。假設您的可執行文件不是混合模式程序集,但它使用的是某些DLL,請參閱this post以瞭解如何處理它,而不需要.exe.config文件。

相關問題