与.NET 4.0相比,如何识别已使用/ for .NET 4.5编译程序集?

 爱你不愿放cwy 发布于 2023-02-04 21:09

我有一些构建代理通过TeamCity设置为我们构建.NET代码,我开始怀疑,尽管项目设置,他们是否输出.NET 4.5构建的程序集.我怀疑的是,我不知道Windows 2012 Server是否带有开箱即用的.NET 4.5或4.0,因此它是否只有4.0或任何4.0程序集可用.

如何查看磁盘上的程序集并确定它是使用.NET 4.0还是4.5构建的?

正如显然由Marc Gravell这篇博客,还有在这些组件是如何建成的差异,尽管我们可能无法实际使用任何.NET 4.5组件/特别功能.

我尝试在程序集上使用ILDASM,但是已知的.NET 4.5(.1)控制台应用程序上的元数据引用仍然说4.0:

// Metadata version: v4.0.30319

我尝试启动仅安装了.NET 4.0的应用程序Windows 7,然后启动,但是如果只能通过测试所有内容来确定一切是否正常,那么我宁愿再尝试一下,看看它是否内置了正确的版本首先.

这可能吗?

1 个回答
  • 运行ildasm.exe并查看清单.你会看到TargetFrameworkAttribute:

    .custom instance void [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) = 
    ( 01 00 1A 2E 4E 45 54 46 72 61 6D 65 77 6F 72 6B   // ....NETFramework
      2C 56 65 72 73 69 6F 6E 3D 76 34 2E 35 01 00 54   // ,Version=v4.5..T
      0E 14 46 72 61 6D 65 77 6F 72 6B 44 69 73 70 6C   // ..FrameworkDispl
      61 79 4E 61 6D 65 12 2E 4E 45 54 20 46 72 61 6D   // ayName..NET Fram
      65 77 6F 72 6B 20 34 2E 35 )                      // ework 4.5
    

    CLR使用此属性来验证计算机上是否存在正确的版本,如果不是,则提示用户自动安装该版本.

    2023-02-04 21:13 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有