我有一个在.NET Framework中编译的库/ DLL文件。
现在(没有任何编码)我想检查.NET Framework版本 用于编译此库。我需要知道它是2.0,3.5还是4.0。 有没有任何工具可以帮助我实现这一目标? (我知道它应该在Framework 4.0的版本下编译,但我需要100%确定使用了Framework的4.0版本。)
答案 0 :(得分:13)
您必须使用ILDASM。你双击清单,你得到
//元数据版本:v2.0.50727
或
//元数据版本:v4.0.30319
Framework 3.0和3.5并不是CLR的新版本,因此您将继续使用V2.0。最多,您可以通过填充依赖项来猜测您将需要哪个框架。有些dll只能在3.5中使用,但是如果你手动将它们复制到只有2.0的PC中,应用程序就可以运行。 检查C:\ windows \ Microsoft.NEt \ Framework,您将在相应的文件夹中找到它们。
希望这有帮助
答案 1 :(得分:9)
如果您将它作为项目中的参考。您应该能够查看该引用的属性下的运行时版本。无需编码= - )
答案 2 :(得分:4)
使用ILDASM或Reflector检查程序集清单,并查看引用的System。*程序集的版本。
例如,使用ILDASM查看.NET程序集的清单,我可以看到这是针对Framework 1.1构建的
// Metadata version: v1.1.4322
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 1:0:5000:0
}
.assembly extern System.Web
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 1:0:5000:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 1:0:5000:0
}
.assembly extern ICSharpCode.SharpZipLib
{
.publickeytoken = (1B 03 E6 AC F1 16 4F 73 ) // ......Os
.ver 0:84:0:0
}
.assembly ReverseProxy
{
// --- The following custom attribute is added automatically, do not uncomment -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool,
// bool) = ( 01 00 00 01 00 00 )
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module ReverseProxy.dll
// MVID: {3F1B8B81-1B8F-4DD7-A71F-FD019C095F25}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x010A0000
答案 3 :(得分:1)
我会使用Reflection:
Assembly a = Assembly.ReflectionOnlyLoadFrom("C:\\library.dll");
Console.WriteLine(a.ImageRuntimeVersion);
但是,我是一名程序员。我不知道如何在没有任何编码的情况下确定这些类型的东西。