获取.NET Framework目录路径

Bru*_*axo 70 .net c# directory frameworks

如何在C#应用程序中获取.NET Framework目录路径?

我引用的文件夹是"C:\ WINDOWS\Microsoft.NET\Framework\v2.0.50727"

Mil*_*ian 178

可以使用以下方法获取当前.NET应用程序活动的CLR的安装目录的路径:

System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
Run Code Online (Sandbox Code Playgroud)

强烈建议不要直接阅读注册表.例如,当.NET应用程序在64位系统中运行时,可以从"C:\ Windows\Microsoft.NET\Framework64\v2.0.50727"(AnyCPU,x64编译目标)或"C:\"加载CLR. Windows\Microsoft.NET\Framework\v2.0.50727"(x86编译目标).阅读注册表不会告诉您当前CLR使用了哪两个目录.

另一个重要的事实是,对于.NET 2.0,.NET 3.0和.NET 3.5应用程序,"当前的CLR"将是"2.0".这意味着即使在.NET 3.5应用程序(从3.5目录加载它们的一些程序集)中,GetRuntimeDirectory()调用也将返回2.0目录.根据您对术语".NET Framework目录路径"的解释,GetRuntimeDirectory可能不是您要查找的信息("CLR目录"与"3.5程序集来自的目录").

  • 接受的答案有3票.这有83个(其中一个是我的). (3认同)
  • 我相信这是正确的答案,应该是选定的答案.感谢您澄清GetRuntimeDirectory即使在3.0或3.5应用程序上也始终返回2.0文件夹的事实.在大多数情况下,这是正确的行为,您希望访问框架工具,这些工具在2.0(但不在3.0 3.5中). (2认同)

Bri*_*lph 40

一种更简单的方法是包含Microsoft.Build.Utilities程序集和使用

using Microsoft.Build.Utilities;
ToolLocationHelper.GetPathToDotNetFramework(
        TargetDotNetFrameworkVersion.VersionLatest);
Run Code Online (Sandbox Code Playgroud)