Получение the.NET путь к каталогу платформы



Как я могу получить путь к каталогу .NET Framework внутри моего приложения C#?



папка, на которую я ссылаюсь "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727"

641   4  

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

    Ничего не найдено.