在我的電腦上,我安裝了.NET Framework 2.0,然後安裝了.NET Fratmeworkt 3.0。然而,最近我從一個程序中看到「事件1000,.NET運行時2.0錯誤報告」的異常。我想知道,爲什麼這個程序仍然使用.NET運行時2.0而不是新版本。我如何檢查特定程序使用的.NET Runtime版本?有可能改變它嗎?.net運行時間2.0而不是最新版本?
回答
這一切都取決於所針對的應用程序編譯的.NET版本。開發人員選擇目標框架。據我所知,最終用戶不能在部署後更改使用哪個版本的庫。如果應用程序的目標是2.0,即使安裝了4.0,它也將始終運行在2.0版本的庫上。
「.NET運行時」實際上意味着「公共語言運行時」(CLR),它已經是.NET 2.0,3.0和3.5的版本2.0。只有使用.NET 4.0,CLR版本也增加到4.0(有很多問題令人困惑,關於這個SO的雙重版本,好的概述見answer)。所以你看到的信息可能會令人困惑,但仍然是正確的。
如果您尚未安裝.NET 4.0,則.NET運行時2.0是您計算機上的唯一版本。
您可能想知道應用程序是否實際上是針對.NET Framework 3.0(3.5)而不是.NET Framework 2.0編譯/構建的。
爲了獲取這些信息,您需要查看應用程序集的元數據,即其他程序集的引用(包括.NET框架的引用)的存儲位置,以及這些其他程序集的版本。
要查看此信息,您可以使用.NET Framework SDK(或Visual Studio)附帶的Reflector或ILDASM.EXE
。
例如,在您選擇的二進制(可執行文件或DLL)上使用ILDASM.EXE
,然後打開「MANIFEST」節點。你會看到條目是這樣的:
.assembly extern System.Windows.Forms
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89) // .z\V.4..
.ver 4:0:0:0
}
,在此就從.NET 4.0的應用程序,並採取只指System.Windows.Forms.dll
thise情況下,但我覺得你得到的圖片。
通過在應用程序的配置文件中指定<supportedRuntime>
元素,您可以(部分)影響應用程序使用哪個版本的運行時。有關此更多的討論,請參閱this Stack Overflow question,其中others。
運行時間是關鍵字。運行時只有4種不同的版本:1.0,1.1,2.0和4.0。您仍在使用CLR的版本2.0.50727和抖動。並且mscorlib.dll和其他核心.NET框架程序集仍然是2.0.0.0
當您安裝.NET 3.0,一些支持WCF,WPF和Linq之類的新程序集時,您肯定會獲得更多的好東西,以及一個新版本的C#編譯器。即使它們不需要新版本的運行時,也足以保證版本號增加。
.NET的下一個版本4.5也會發生同樣的情況。運行版本保持不變,4.0.30319
- 1. MMC .Net運行時版本
- 2. 如何緩存Net :: HTTP響應而不是最新版本?
- 3. 在.NET 3.5上運行的nServiceBus的最新版本是什麼?
- 4. 什麼是支持.NET 2.0的結構圖的最新版本
- 5. 在另一個版本運行時排隊而不是運行TeamCity版本
- 6. 不同的運行時版本和新的.NET CLI
- 7. .NET運行時2.0錯誤
- 8. 不同的行爲運行Maven的版本時:用最新版本的目標
- 9. 是.NET Framework v4.0.30128的最新版本嗎?
- 10. VS運行舊版本的Silverlight應用程序而不是新版本
- 11. 默認.NET運行時版本
- 12. 運行最新版本的nhibernate問題
- 13. 如何確保用戶正在運行最新版本的應用程序而不是緩存版本
- 14. 支持Powershell 2.0的最低版本的.NET 2.0框架?
- 15. 運行NET 2.0應用程序和IIS ASP.NET版本4.0
- 16. Bower總是安裝最新版本而不是指定的版本
- 17. 如果我的目標是.NET 2.0,我仍然可以從新版本獲得運行時功能嗎?
- 18. 計算確切的運行時間,而不是實際的運行時間
- 19. 使用Grails 2.4.4而不是最新版本會更安全嗎
- 20. `摩卡--version`顯示的2.4.5,而不是最新版本
- 21. 何處獲取最新運行時(MicrosoftAzureServiceFabric.cab版本5.5.216.0)
- 22. 獲取最新的Wordpress版本號.net
- 23. SignalR最新版本的.NET Framework 4
- 24. 2.0之前的最新版本的RetroFit是什麼?
- 25. 在運行時而不是在編譯時綁定的__CLASS__的版本
- 26. NG2表不是最新版本Angular2
- 27. 嵌入.Net運行時間
- 28. VMware Tool是最新版本還是不通過命令行(Windows)
- 29. .NET運行庫2.0版致命的執行引擎錯誤
- 30. Textmate不運行最新版本的紅寶石