Вопрос по c#, frameworks, .net, directory – Получение пути к каталогу .NET Framework
ожно получить с помощью следующего метода:
System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
я мог бысильно совет против чтения реестра напрямую. Например, когда приложение .NET работает в 64-битных системах, CLR может быть загружен либо из «C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727» (AnyCPU, целевые объекты компиляции x64), либо из «C: \». Windows \ Microsoft.NET \ Framework \ v2.0.50727 "(цель компиляции x86). Чтение реестра будетне сказать, какой из двух каталогов использовался текущим CLR.
Другим важным фактом является то, что «текущая CLR» будет «2.0» для приложений .NET 2.0, .NET 3.0 и .NET 3.5. Это означает, что вызов GetRuntimeDirectory () вернет каталог 2.0 даже в приложениях .NET 3.5 (которые загружают некоторые их сборки из каталога 3.5). В зависимости от вашей интерпретации термина «путь к каталогу .NET Framework», GetRuntimeDirectory может быть не той информацией, которую вы ищете («каталог CLR» или «каталог, из которого поступает сборка 3.5»).
"Accepted" != "Correct"
Вы можете получить его из реестра Windows:
using System;
using Microsoft.Win32;
// ...
public static string GetFrameworkDirectory()
{
// This is the location of the .Net Framework Registry Key
string framworkRegPath = @"Software\Microsoft\.NetFramework";
// Get a non-writable key from the registry
RegistryKey netFramework = Registry.LocalMachine.OpenSubKey(framworkRegPath, false);
// Retrieve the install root path for the framework
string installRoot = netFramework.GetValue("InstallRoot").ToString();
// Retrieve the version of the framework executing this program
string version = string.Format(@"v{0}.{1}.{2}\",
Environment.Version.Major,
Environment.Version.Minor,
Environment.Version.Build);
// Return the path of the framework
return System.IO.Path.Combine(installRoot, version);
}