4 ответов:
путь к каталогу установки активной среды CLR для текущего приложения .NET можно получить с помощью следующего метода:
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").
более простой способ-включить Microsoft.Строить.Утилиты сборки и использования
using Microsoft.Build.Utilities; ToolLocationHelper.GetPathToDotNetFramework( TargetDotNetFrameworkVersion.VersionLatest);
Вы можете захватить его из реестра 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); }
читать значение [HKLM]\Software\Microsoft.NetFramework\InstallRoot ключ - вы получите "C:\WINDOWS\Microsoft.NET\Framework затем добавьте нужную версию фреймворка.
Comments