我有一些构建代理通过 TeamCity 设置为我们构建 .NET 代码,我开始怀疑,尽管有项目设置,它们是否仍在输出 .NET 4.5 构建的程序集。我的怀疑来自于这样一个事实:我不知道 Windows 2012 Server 是否附带了开箱即用的 .NET 4.5 或 4.0,因此它是否曾经只有 4.0 或任何可用的 4.0 程序集。
如何查看磁盘上的程序集并确定它是使用 .NET 4.0 还是 4.5 构建的?
可以看出Marc Gravell 的这篇博文, there are尽管我们实际上可能没有专门使用任何 .NET 4.5 程序集/功能,但这些程序集的构建方式存在差异。
我尝试在程序集上使用 ILDASM,但已知 .NET 4.5(.1) 控制台应用程序上的元数据引用仍然显示 4.0:
// Metadata version: v4.0.30319
我尝试在仅安装了 .NET 4.0 的情况下启动应用程序 Windows 7,并且它启动了,但如果唯一的方法是确定是否一切作品是通过测试一切,那么我宁愿多尝试一下,看看它是否首先使用正确的版本构建。
那么这可能吗?
运行 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 使用此属性来验证计算机上是否存在正确的版本,提示用户如果没有自动安装。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)