【问题标题】:Where is the .NET Framework 4.5 directory?.NET Framework 4.5 目录在哪里?
【发布时间】:2012-08-22 09:51:29
【问题描述】:

我已安装 Windows 8、Visual Studio 2012,但在 %WINDIR%\Microsoft.NET\Framework 中没有 v4.5 目录。

是我做错了什么,还是 .NET 4.5 与其他版本不同?

如果是因为我没有安装工具,有没有一套不同的工具可以下载?据我所知,我能够构建 .NET 4.5 应用程序。

【问题讨论】:

标签: .net-4.5 installation-path


【解决方案1】:

.NET 4.5 是 4.0 的就地替代品 - 您可以在 4.0 目录中找到程序集。

请参阅 Rick Strahl 和 Scott Hanselman 关于此主题的博客。

您还可以在以下位置找到具体版本:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework

【讨论】:

  • 谢谢,但是 MSDN 的这个页面怎么样。 msdn.microsoft.com/en-us/library/bb397428。它提到了一个 4.5.0.0 目录?
  • @NickRandell - 您询问了这些程序集。那篇文章是关于 SDK/工具的。
  • @NickRandell - 由于这不在您的系统上,请查看 4.0 目录中的程序集版本,看看它们是否确实是 4.5(如链接博客中所述)。
  • 我在这些目录中肯定有 4.5,但是对这些工具有什么想法吗?
  • 仅供参考:我刚刚在我的 Windows Server 2008 R2 上安装了 v4.5.2。正如 Jon Skeet 所指出的,这些程序集实际上位于 C:\Windows\Microsoft.NET\Framework\v4.0.30319 中。
【解决方案2】:

编辑:这个答案在 2013 年年中之前是正确的,但您可能有自 the big msbuild change 以来的更新版本。详情请见the answer from Jonny Leeds。

C:\Windows\Microsoft.NET\Framework\v4.0.30319下的版本其实是.NET 4.5。这有点奇怪,但mscorlib 肯定包含用于异步的AsyncTaskMethodBuilder 等。

.NET 4.5 有效地覆盖 .NET 4。

【讨论】:

  • 正式版还是这样吗?
  • @Kiquenet:我怀疑最终版本被删除了;它可作为单独的 nuget 包使用。
  • 这几乎是真的——但是 msbuild 已经移动了——请看我下面的帖子
  • @JonnyLeeds:谢谢 - 添加了对博文的引用。
【解决方案3】:

.NET 4.5 不是并行版本,它替换 4.0 的程序集。很像 .NET 3.0、3.5 和 3.5SP1 替换了 2.0 的程序集。并添加了一些新的。 CLR 版本仍然是 4.0.30319。您只关心引用程序集,它们位于 c:\program files\reference 程序集。

【讨论】:

  • 我以为 3.0 和 3.5 只是添加了程序集——而不是像 4.5 那样替换(比如说)mscorlib。还是 3.0 可能是这样,但 3.5 不是这样?
  • @Jon - 不,他们实际上被替换了。这造成了一些痛苦,因为 [AssemblyVersion] 没有改变。添加的 WaitHandle.WaitOne(int) 重载尤其臭名昭著。 .NET 4 中有避免此问题的对策,参考程序集不再是 GAC 版程序集的副本。它们很特别,不含 IL。
  • 对于跨多个版本的测试,是否有任何简单的虚拟机替代方案? Windows Update 会默认自动更新到 4.5 吗?
  • 这看起来像是一个问题,而不是评论。问题位于页面顶部,单击按钮将其放在那里。
【解决方案4】:

虽然上述答案是正确的,但值得注意的是 MSBuild has changed 并且它不再随 .net 框架一起提供,它要么独立存在,要么与 Visual Studio 一起提供。结果它的二进制文件被移动了......所以你在 4.0.303619 目录下得到的那个实际上是旧的!

我刚刚被这个发现 - 我发现 automatic binding redirects 仅在从 VisualStudio 运行时有效,但在从命令行运行 msbuild 时无效...线索是在 VS 2013 中添加了绑定重定向(对于阅读.net framework 4.5)。如果您打开 vs 命令提示符,您会看到它现在从程序文件中获取它,正如另一篇文章提到的那样。而我在我的路径上使用了一个链接到旧版本的批处理文件。

版本号

框架下:

PS C:\Windows\Microsoft.NET\Framework\v4.0.30319> .\msbuild.exe -version
Microsoft (R) Build Engine version 4.0.30319.33440
[Microsoft .NET Framework, version 4.0.30319.34014]
Copyright (C) Microsoft Corporation. All rights reserved.

4.0.30319.33440PS C:\Windows\Microsoft.NET\Framework\v4.0.30319>

在程序文件下:

PS C:\Program Files (x86)\MSBuild\12.0\Bin> .\MSBuild.exe -version
Microsoft (R) Build Engine version 12.0.21005.1
[Microsoft .NET Framework, version 4.0.30319.34014]
Copyright (C) Microsoft Corporation. All rights reserved.

12.0.21005.1PS C:\Program Files (x86)\MSBuild\12.0\Bin>

【讨论】:

    【解决方案5】:

    网页不正确,我已经向 MS 指出了这一点,他们会修改它。

    如上所述,.NET 4.5 是 4.0 的就地升级,因此您将只有 Microsoft.NET\Framework\v4.0.30319。

    MSBuild 的 ToolVersion 仍为“4.0”。

    【讨论】:

      【解决方案6】:

      确定您是否安装了 4.5(而不是 4.0)的官方方法是在注册表项中:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full
      

      Relesae DWORD 需要大于 378675 这是微软的doc

      在 4.0.30319.xxxxx 之后检查次要版本的所有其他答案似乎都是正确的(msbuild.exe -version 或 clr.dll 的属性),我只需要记录的内容(不是博客)

      【讨论】:

      • 注意 \v4\,而不是 \v4.0\,这是不同的!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 2011-05-21
      • 1970-01-01
      • 2022-12-28
      • 2017-06-03
      • 2012-12-06
      相关资源
      最近更新 更多