【问题标题】:How do I change the .NET framework version on a project?如何更改项目的 .NET 框架版本?
【发布时间】:2014-04-03 17:45:24
【问题描述】:

我正在尝试使用microsoft reference source,但遇到了问题。 根据他们对troubleshooting 的建议,我尝试验证我使用的是正确的 .NET 框架版本。 然而,ildasm 显示了这一点:

我确实更改了项目的目标框架,如您在此处看到的:

我需要在其他地方更改版本吗?

【问题讨论】:

  • 你尝试重建项目了吗?
  • @LRNAB 是的,有几次,我也关闭并重新打开了 Visual Studio。
  • 您是否认为Metadata version 对于.Net framework 4.0 和4.5 应该有所不同?
  • 我怀疑这只是版本号问题。 This post 表示 4.5 框架的版本号仍然以“4.0”开头。
  • @Sarien 尝试使用 Telerik 的 decompiler

标签: c# .net debug-symbols


【解决方案1】:

你得到的是准确的。针对 .NET 4.5 或 4.5.1 的项目仍使用 CLR 版本 4.0.30319 和核心框架程序集,如 mscorlib v4.0.0.0

这在很大程度上与 .NET 版本 3.0、3.5 和 3.5SP1 发生的情况重复,它们针对 CLR 版本 2.0.50727 和核心框架程序集 v2.0.0.0。就像 4.5 和 4.5.1 一样,它们不是新的并行版本。他们只是在现有集合中添加了新程序集。

您仍然可以通过 ildasm.exe 判断您选择的目标,查看您在元数据中看到的 System.Runtime.Versioning.TargetFrameworkAttribute 属性。 CLR 对此进行检查以确保您没有尝试在 .NET 4.0 或 4.5 安装上运行 4.5.1。提供下载您需要的版本。它看起来像这样(为便于阅读而编辑):

 .custom instance void [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) = 
( 01 00 1C 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 2E 31 01   // ,Version=v4.5.1.
  00 54 0E 14 46 72 61 6D 65 77 6F 72 6B 44 69 73   // .T..FrameworkDis
  70 6C 61 79 4E 61 6D 65 14 2E 4E 45 54 20 46 72   // playName..NET Fr
  61 6D 65 77 6F 72 6B 20 34 2E 35 2E 31 )          // amework 4.5.1

【讨论】:

  • +1,这个答案太好了,有你这样的贡献者真的很幸运
【解决方案2】:

如果您试图从元数据版本确定 .Net 框架版本,那么这不是正确的方法。

元数据版本显示运行时版本或 CLR 版本。

.NET Framework 4、4.5 和 4.5.1 包括 CLR 4,但 .NET 框架 2.0、3.0 和 3.5 包括 CLR 2.0。 (没有版本 3 的 CLR。​​)

因此,对于 .Net 框架 4、4.5 和 4.5.1,您将看到相同的 CLR 版本,即 V4.0.30319。您可能会看到 this answer 用于识别 .Net 框架版本。

【讨论】:

  • 这是一个非常好的答案,除了“可以安全地假设”。应该验证。您是正确的,问题中概述的方法没有这样做。
  • @BenVoigt,我实际上是在尝试查找资源/参考来识别应用程序的 .Net 框架版本。但你说得对,我应该修改那句话
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多