确定.NET Framework版本的DLL
我有一个旧的dll被编译的.NET框架和部署。 我不确定它被编译的.NET框架的版本。 我想知道如何我可以确定哪个版本的.NET框架这个DLL编译? 我不能相信源代码,因为我相信它已经升级到Visual Studio 2008,并更改为.NET框架版本3.5。
加载到reflection器 ,看看它参考?
例如:
在PowerShell中,您可以使用以下命令来获取目标运行时:
$path = "C:\Some.dll" [Reflection.Assembly]::ReflectionOnlyLoadFrom($path).ImageRuntimeVersion
我从Ben Griswold的回答中将其适用于PowerShell。
如果您想知道在Visual Studio中指定的目标框架版本,请使用:
$path = "C:\Some.dll" [Reflection.Assembly]::ReflectionOnlyLoadFrom($path).CustomAttributes | Where-Object {$_.AttributeType.Name -eq "TargetFrameworkAttribute" } | Select-Object -ExpandProperty ConstructorArguments | Select-Object -ExpandProperty value
你应该得到类似的东西
.NETFramework,版本= v4.5.2
dotPeek是一个很好的(免费)工具来显示这些信息。
如果你有几个问题得到reflection器,那么这是一个很好的select。
你可以使用ILDASM …
ildasm.exe C:\foo.dll /metadata[=MDHEADER] /text /noil
你有几个select:要从程序的代码中获得它,使用Assembly.ImageRuntimeVersion:
Dim a As Assembly = Reflection.Assembly.ReflectionOnlyLoadFrom("C:\path\assembly.dll") Dim s As String = a.ImageRuntimeVersion
在命令行中,从v2.0开始,如果双击“MANIFEST”并查找“元数据版本”,ildasm.exe将显示它。 确定图像的CLR版本
使用ILSpy http://ilspy.net/
开源,免费,绝对是一个select,因为现在reflection器是付费的。
通过Visual Studio的另一种select,添加到任何项目的DLL的引用,然后右键单击新的引用,然后单击属性,您可以看到您在运行时版本中查找:
用ILDASM反编译它,看看被引用的mscorlib的版本(应该在顶部)。
只是简单
var tar = (TargetFrameworkAttribute)Assembly .LoadFrom("yoursAssembly.dll") .GetCustomAttributes(typeof(TargetFrameworkAttribute)).First();