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

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

推荐答案

当前服务器的CLR active安装目录的路径.NET应用程序可通过以下方法获得:

System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()

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

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

.net相关问答推荐

在 .NET 7 项目上设置 Sentry 时遇到问题

为什么这个同步运行的异步睡眠会挂起?

为什么 ULong > 16 位的数学会变得不稳定?

您可以为 Func 或 Action 类型的函数或子参数指定默认值吗?

使用 PowerShell 从文件夹中获取文件名的最快\最好的方法是什么?

System.IO.Directory.Exists 在 LINQ 语句中失败,但在 foreach 循环中没有

在 C# 中生成随机小数

异步总是 WaitingForActivation

如何 Select 数据表中列的最小值和最大值?

获取类型的默认构造函数的最有效方法

[DllImport("QCall")] 是什么?

从 C# 中的接口继承 XML 注释

.NET 的 String.Normalize 有什么作用?

如何仅在需要时提升权限?

将字典值转换为数组

从 C# 中的字符串中删除最后一个字符.优雅的方式?

绑定到不在列表中的值的可编辑组合框

判断对象列表是否包含具有特定值的属性

使用 LINQ 搜索树

找不到 System.Windows.Media 命名空间?