如何识别程序集是使用 .NET 4.5(而不是 .NET 4.0)编译的?

2023-11-25

我有一些构建代理通过 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(使用前将#替换为@)

如何识别程序集是使用 .NET 4.5(而不是 .NET 4.0)编译的? 的相关文章

随机推荐

  • 如何在 Nodejs Express 中提供图像

    我有这个代码 var express require express var http require http var app express var server http createServer app app use expres
  • std::unique_lock 或 std::lock_guard

    我有两个用例 答 我想同步两个线程对队列的访问 B 我想同步两个线程对队列的访问并使用条件变量 因为其中一个线程将等待另一个线程将内容存储到队列中 对于用例 A 我看到代码示例使用std lock guard lt gt 对于用例 B 我看
  • 在 Javascript/Jquery 中将 URL 图像转换为 Base64 或 Blob 的简单方法

    我正在为一个简单的应用程序开发离线模式 并且我正在使用 Indexeddb PounchDB 作为库 我需要将图像转换为 Base64 或 BLOB 才能保存它 我已经尝试过这段代码 它仅适用于一张图像 提供的图像 我不知道为什么它不适用于
  • Windows/C++:如何使用未注册的 COM dll

    在我们的应用程序中 我们需要使用一个之前未在系统中注册的COM dll 即msdia100 dll 早些时候 我们刚刚通过以下代码调用其 DllRegisterServer 来调用 DLL Register DIA DLL required
  • 使用 Jersey 的 Java 异步 REST Web 服务?

    我需要实现一个 Java REST Web 服务 我们使用 Jersey 框架 它基本上可以 A 在返回响应之前阻止等待某个事件 或轮询事件 b 提供某种 aysnc 行为来通知客户端请求已被处理 我正在考虑返回一个 transaction
  • MVVM:在 ViewModel 之间共享数据

    如何在多个 ViewModel 之间共享数据 例如 application 中有一个名为 Project 的类 public class Project ModelBase private string projectName public
  • 有没有办法通过protractor cli传递多个浏览器

    只是想知道是否可以像这样指定 cli args 到量角器 multiCapability 0 browserName chrome multiCapability 1 browserName firefox 以便它覆盖量角器conf文件中定
  • 获取最后一个顶级命令作为字符串

    有没有办法将最后一个顶级命令存储到字符串中 而无需将历史记录保存到文件中并将其读回以获取最后一个命令 我有这方面的代码 lastcmd lt function tmp lt tempfile savehistory tmp If we ca
  • XPath:一起选择自己和跟随的兄弟姐妹

    div dt Test 1 dt dd dd dt Test 2 dt dd dd div 到目前为止我已经写了这个 XPath dt contains text Test self dt following sibling dd 但这并没
  • Node.js - 设置系统日期/时间

    有没有办法从 Node js 服务器设置操作系统上的日期 时间 有很多关于如何更改时区的示例 但我需要更改电脑的实际日期 时间 我的回答基于 Mimouni的回答https stackoverflow com a 23156354 1799
  • Caliburn.Micro 嵌套 ViewModel 最佳实践

    这是一个很长的问题 所以请耐心等待 目前 我正在开发一个小工具 旨在帮助我跟踪故事中的无数角色 该工具执行以下操作 加载当前以 json 形式存储在磁盘上的字符并将它们存储在列表中 该列表通过 ListBox 在 Shell 中呈现 如果用
  • 如何在 SimCity 5 中实现建筑物在移动时摆动的物理效果?

    用纯文字很难描述 所以我录了一个GIF来演示 https public lightpic info image 2B1F 582465841 gif 我目前正在做一个项目 需要这样的效果 目前我已经用SpriteKit在iOS上完成了类似的
  • NGINX 透明 TCP 代理

    我有一个 ELK 堆栈 在两台 Logstash 主机前面 我设置了两个 NGINX 负载均衡器作为透明代理 UDP 流量正在发挥作用 TCP 与配置一起工作 stream upstream syslog server sapvmlogst
  • 如何使用 jQuery 模板设置日期/时间格式?

    我刚刚开始使用jQuery 模板作为我的 javascript 模板引擎 我的问题是 如何将日期 从 ASP NET Json ActionResult 返回 格式化为以下形式 Date 1288709830000 我尝试执行以下操作 fo
  • 优化Java中字符串集合的内存使用

    我有大量的名称 值对 大约 100k 我需要将它们存储在某种缓存 例如哈希映射 中 其中值是平均大小约为 30k 字节的字符串 现在我知道一个事实 即大量值具有完全相同的字符串数据 为了避免多次分配相同的字符串数据 我想以某种方式重用以前分
  • Android - ImageView 内的画布绘制线

    我有一个 ImageView 我想在其中画一条线 我已经做了以下操作 mImagenCampo ImageView findViewById R id imagen campo crearPunto mArea9M mPaloIzq v g
  • 如何在Android SQLite中使用TRIGGER

    我的数据库中有两个表 表一有姓名和房间号栏 表二有房间号和时间栏 现在 当删除或添加第一列中的房间号时 我的第二个表也应该更新 我认为这可以通过 TRIGGER 命令实现 但我不太确定如何使用它 一般来说我的创建数据库语句是这样的 priv
  • 获取年份中的季度开始日期和结束日期

    我正在使用 SQL Server 2008 我想获取一年中所有季度的开始日期和结束日期 例如 如果我在查询中传递 2013 那么输出应该像 StartDate EndDate QuarterNo 2013 04 01 00 00 00 00
  • 未使用 MetadataType 加载元数据

    我有一些问题 疑问元数据类型 我有 DLL 帮助程序项目 用于使用 LinqToSQL 从 MS SQL Server 访问数据 我还需要为生成的类 ClientInfoView 添加元数据 我是按照以下方式完成的 using System
  • 如何识别程序集是使用 .NET 4.5(而不是 .NET 4.0)编译的?

    我有一些构建代理通过 TeamCity 设置为我们构建 NET 代码 我开始怀疑 尽管有项目设置 它们是否仍在输出 NET 4 5 构建的程序集 我的怀疑来自于这样一个事实 我不知道 Windows 2012 Server 是否附带了开箱即