mpe*_*row 124 .net .net-framework-version
我有一个旧的DLL,它是针对.NET框架编译并部署的.我不确定它编译的.NET框架的哪个版本.我想知道如何确定这个dll编译的.NET框架的哪个版本?我不相信源代码,因为我相信它已升级到Visual Studio 2008并更改为.NET framework 3.5版.
Swo*_*gan 108
在PowerShell中,您可以使用以下内容来获取目标运行时:
$path = "C:\Some.dll"
[Reflection.Assembly]::ReflectionOnlyLoadFrom($path).ImageRuntimeVersion
Run Code Online (Sandbox Code Playgroud)
我根据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
Run Code Online (Sandbox Code Playgroud)
你应该得到类似的东西
.NETFramework,版本= v4.5.2
Par*_*ice 51
将它加载到Reflector中,看看它引用了什么?
例如:

Jos*_*ola 45
你可以使用ILDASM ......
ildasm.exe C:\foo.dll /metadata[=MDHEADER] /text /noil
Run Code Online (Sandbox Code Playgroud)
并检查输出中的"元数据部分".它会是这样的:
元数据部分:0x424a5342,版本:1.1,额外:0,版本len:12,版本:v4.0.30319
'version'标记将告诉您.NET Framework版本.在上面的例子中它是4.0.30319
Ben*_*old 15
您有几个选项:要以编程方式从托管代码获取它,请使用Assembly.ImageRuntimeVersion:
Dim a As Assembly = Reflection.Assembly.ReflectionOnlyLoadFrom("C:\path\assembly.dll")
Dim s As String = a.ImageRuntimeVersion
Run Code Online (Sandbox Code Playgroud)
从命令行开始,从v2.0开始,如果双击"MANIFEST"并查找"元数据版本",ildasm.exe将显示它.确定图像的CLR版本
ste*_*nly 14
简单地说
var tar = (TargetFrameworkAttribute)Assembly
.LoadFrom("yoursAssembly.dll")
.GetCustomAttributes(typeof(TargetFrameworkAttribute)).First();
Run Code Online (Sandbox Code Playgroud)
lin*_*ney 11
通过Visual Studio的另一个选项,将DLL的引用添加到任何项目,然后右键单击新引用并单击属性,您可以在运行时版本中看到您要查找的内容:
| 归档时间: |
|
| 查看次数: |
104594 次 |
| 最近记录: |