为了账号安全,请及时绑定邮箱和手机立即绑定

如何找出可执行文件需要运行哪个版本的.NET Framework?

如何找出可执行文件需要运行哪个版本的.NET Framework?

慕工程0101907 2019-11-14 15:36:18
我有一个可执行文件,并且我想知道该文件需要启动的.NET Framework版本。有一种简单的方法可以在某处找到此信息吗?
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

我认为最可靠的方法是确定所需的CLR版本。您可以通过使用ILDASM并查看“ MANIFEST”节点或Reflector并以IL形式查看“ Application.exe”节点的分散视图来完成此操作。在这两种情况下,都有注释指示CLR版本。在ILDASM中,注释为“ //元数据版本”,在Reflector中,注释为“目标运行时版本”。


以下是名为WindowsFormsApplication1.exe的.NET WinForms应用程序的示例:


ILDASM:


// Metadata version: v2.0.50727

.assembly extern mscorlib

{

  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..

  .ver 2:0:0:0

}

.assembly extern System

{

  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..

  .ver 2:0:0:0

}

反光板:


.module WindowsFormsApplication1.exe

.subsystem 0x0002

// MVID: {CA3D2090-16C5-4899-953E-4736D6BC0FA8}

// Target Runtime Version: v2.0.50727

您也可以查看引用的程序集列表,并查找具有最高版本号的引用。


同样,使用ILDASM查看“ MANIFEST”节点数据:


.assembly extern System.Drawing

{

  .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )                         // .?_....:

  .ver 2:0:0:0

}

.assembly extern System.Core

{

  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..

  .ver 3:5:0:0

}

并使用Reflector,查看列出的每个参考的虚弱(仍为IL):


.assembly extern System.Core

{

    .ver 3:5:0:0

    .publickeytoken = (B7 7A 5C 56 19 34 E0 89)

}

通过查找具有最高版本元数据的引用,您可以确定引用来自哪个版本的Framework,这表明您需要安装与应用程序运行相同的Framework版本。话虽如此,我不会将其视为100%可靠,但我认为它不会很快改变。


查看完整回答
反对 回复 2019-11-14
?
HUWWW

TA贡献1874条经验 获得超12个赞

现在,您可以使用ILSpy来检查程序集的目标框架。加载程序集后,单击程序集节点的根,您可以在TargetFramework声明下找到信息:


[assembly: TargetFramework(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]


查看完整回答
反对 回复 2019-11-14
  • 3 回答
  • 0 关注
  • 922 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信