除了在只有.NET Framework 3.5的计算机上运行它之外,如何检查.NET应用程序的版本?
答案 0 :(得分:4)
在.NET 2.0之后,.NET框架版本变得更加蓬勃发展。应用程序以 CLR 版本为目标,它使用EXE的程序集元数据。目前有四个,1.0,1.1,2.0和4.0。不计算Compact Framework,Silverlight,Micro Framework使用的特殊内容。
Framework 2.0,2.0SP1,2.0SP2,3.0,3.5和3.5SP1都针对相同的CLR版本2.0.50727。这些版本之间的区别在于它们在以后的版本中提供了其他程序集。支持WPF,WCF和LINQ等功能的那种。它们是添加剂,只是更多的东西添加到已经相当坚实的东西。您永远不必猜测您的程序需要什么版本的框架,只需打开Solution Explorer窗口中的References节点并查看程序集版本号。或者在项目中设置Target Framework属性并继续工作直到编译器停止抱怨。
回到原来的问题:您为拥有 .NET应用程序提供的版本完全取决于您。编辑AssemblyInfo.cs文件中的[AssemblyVersion]属性。
答案 1 :(得分:2)
我不确定你的问题。
如果要检查从.NET应用程序安装的.NET框架版本,请检查:
http://geekswithblogs.net/lorint/archive/2006/01/30/67654.aspx
答案 2 :(得分:1)
Reflector将告诉您构建程序集的框架版本。打开Reflector中的每个程序集,打开“引用”并检查为mscorlib和其他系统程序集显示的版本。
如果反射器可以做到,必须能够在代码中完成它,至少原则上是这样。看起来Reflector使用Cecil来检查代码。
答案 3 :(得分:0)
据我所知,这在代码中是不可能的。 DLL不针对特定的框架版本,而是在特定的CLR下运行并使用特定的程序集。
例如,您可以将3.0应用程序定义为在2.0 CLR下运行的应用程序,并使用在.NET 3.0发布时发布的程序集。 (您还需要检查它是否未引用3.5或4.0发布时发布的任何程序集 - 即使这些较新的程序集可能仅引用随2.0版本发布的其他程序集)。#
实际上,执行此操作的唯一方法是使用特定框架版本发布所有程序集的列表,并使用此列表对待测组件进行交叉检查。
答案 4 :(得分:0)
如果您在Visual Studio中打开应用程序: