我有一個程序集。有沒有辦法來檢測哪個版本的.NET被用來構建該程序集?如何獲得構建程序集的.NET版本(1.1,2.0,3.0等)?
3
A
回答
2
您可以使用Assembly.ImageRuntimeVersion。根據MSDN docs,默認情況下,它被設置爲用於構建程序集的CLR版本。雖然顯然它可以改變。
它是一個字符串屬性,所以你必須做一些字符串比較。
1
我不這麼認爲。使用.NET 2.0構建.NET 1.1應用程序相對困難,但這不是不可能的 - 因此,如果您檢查了引用的應用程序的mscorlib版本,則可能會得到「很可能準確」的圖片,說明它是使用1.1還是2.0構建的+。
你還需要問自己在使用VS2008時想要什麼樣的答案,但是要針對.NET 2.0的目標進行構建。你真的對編譯器的哪個版本感興趣嗎?編譯器不同版本的輸出之間可能存在一些特徵差異。額外的功能也可以讓它消失 - 如果應用程序是以.NET 2.0爲目標編寫的,則可以找到類似於源代碼中的匿名類型的類型。當然,這首先依賴於語言功能......
爲什麼你需要知道這一點,出於興趣?
0
你也許可以使用System.Reflection來檢查系統引用程序集的版本號。
using System;
using System.Reflection;
class Module1
{
public static void CheckReferencedAssemblies(string assemblyPath)
{
Assembly a = Assembly.Load(assemblyPath);
foreach (AssemblyName an in a.GetReferencedAssemblies())
{
// Check an.Version for System assemblies
}
}
}
編輯:我不知道我已經明白你想要什麼。
0
問題的一部分與您的問題是,.NET已經做了很好的工作,不會隨着版本的增加而改變代碼。我的意思是,mscorlib將在.NET 4.0中與.NET 1.1中的相同。
但我有點同意Jon Skeet的暗示問題:你爲什麼需要知道?它純粹是出於興趣,因爲我認爲這對你沒有關係。
1
對於框架< 2.0和框架4.0,引用的mscorlib的版本將爲您提供框架版本。對於框架2.0 - 3.5,請檢查是否存在任何對System.Core或其他3.5+程序集以及PresentationCore或任何其他3.0+程序集的引用。如果你沒有這些,它應該瞄準2.0。
相關問題
- 1. .NET程序集版本
- 2. TFS構建程序集版本衝突
- 3. 如何獲得.NET Standard的舊版本?
- 4. 如何在構建後修改程序集的版本號?
- 5. 我如何獲得正在執行的程序集版本?
- 6. 使用版本化的.Net程序集
- 7. 如何使用程序集版本重命名構建名稱?
- 8. 如何獲得程序集版本而不鎖定文件?
- 9. ASP.Net HttpModule/ErrorHandler - 如何獲得執行程序集版本
- 10. 如何從Wix 3.5中設置.NET dll的程序集版本?
- 11. 在.NET中構建應用程序的不同版本
- 12. 如何在Windows Vista和更新版本(Windows 7,2008)中查看.NET程序集的程序集版本?
- 13. 如何獲得應用程序正在使用的.NET框架版本
- 14. 如何在NANT構建文件中獲得.Net構建宏?
- 15. 如何獲得具有結構的遠程python版本
- 16. 如何獲取應用程序版本並構建iOS PhoneGap應用程序?
- 17. 製作TeamCity版本匹配.NET程序集版本
- 18. 如何在JScript.NET中設置程序集屬性(版本等)?
- 19. 混合模式程序集是針對版本'v1.1.4322'構建的
- 20. TFS構建覆蓋使用不正確版本的程序集
- 21. 確定構建一個程序集的Silverlight版本
- 22. 如何修復引用舊版(測試版).NET的程序集?
- 23. 如何獲得C#.NET編譯器程序集GUID
- 24. .NET版本號(安裝程序版本)
- 25. 如何獲得程序集dll的處理器體系結構?
- 26. 如何構建版本vscode版本
- 27. 如何在我的.NET解決方案中獲得程序集的集合?
- 28. 獲取「主」程序集版本號
- 29. 在PCL中獲取程序集版本
- 30. 如何在Google Play中獲得apk版本的應用程序BETA版本?
所以推測這可能會區分1.1和2.0,但只不過是(直到4.0出來)? – 2008-12-05 09:22:53