我有一个程序集。有没有办法来检测哪个版本的.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. 我如何获得正在执行的程序集版本?
- 4. 如何在构建后修改程序集的版本号?
- 5. 如何获得.NET Standard的旧版本?
- 6. 如何获得程序集版本而不锁定文件?
- 7. ASP.Net HttpModule/ErrorHandler - 如何获得执行程序集版本
- 8. 使用版本化的.Net程序集
- 9. 如何从Wix 3.5中设置.NET dll的程序集版本?
- 10. 如何在Windows Vista和更新版本(Windows 7,2008)中查看.NET程序集的程序集版本?
- 11. 在.NET中构建应用程序的不同版本
- 12. 如何获取应用程序版本并构建iOS PhoneGap应用程序?
- 13. 如何获得应用程序正在使用的.NET框架版本
- 14. 如何在NANT构建文件中获得.Net构建宏?
- 15. 制作TeamCity版本匹配.NET程序集版本
- 16. 确定构建一个程序集的Silverlight版本
- 17. TFS构建覆盖使用不正确版本的程序集
- 18. 混合模式程序集是针对版本'v1.1.4322'构建的
- 19. 如何修复引用旧版(测试版).NET的程序集?
- 20. 如何获得程序集dll的处理器体系结构?
- 21. 如何获得C#.NET编译器程序集GUID
- 22. 如何构建版本vscode版本
- 23. .NET版本号(安装程序版本)
- 24. 在PCL中获取程序集版本
- 25. 如何在我的.NET解决方案中获得程序集的集合?
- 26. 如何在Google Play中获得apk版本的应用程序BETA版本?
- 27. 如何获取VB6中对象的程序集/文件版本?
- 28. 构建版本 - iphone应用程序(xcode)
- 29. 每晚构建VB.NET程序,版本
- 30. C#应用程序的构建版本版本
所以推测这可能会区分1.1和2.0,但只不过是(直到4.0出来)? – 2008-12-05 09:22:53