ruta - path.combine c#
Obtener la ruta del directorio de.NET Framework (4)
La ruta al directorio de instalación del CLR activo para la aplicación .NET actual se puede obtener utilizando el siguiente método:
System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
Recomiendo fuertemente no leer el registro directamente. Por ejemplo, cuando una aplicación .NET se ejecuta en sistemas de 64 bits, la CLR puede cargarse desde "C: / Windows / Microsoft.NET / Framework64 / v2.0.50727" (AnyCPU, destinos de compilación x64) o desde "C: / Windows / Microsoft.NET / Framework / v2.0.50727 "(objetivo de compilación x86). El registro de lectura no le dirá cuál de los dos directorios fue utilizado por el CLR actual.
Otro hecho importante es que "el CLR actual" será "2.0" para las aplicaciones .NET 2.0, .NET 3.0 y .NET 3.5. Esto significa que la llamada GetRuntimeDirectory () devolverá el directorio 2.0 incluso dentro de las aplicaciones .NET 3.5 (que cargan algunos de sus ensamblajes desde el directorio 3.5). Dependiendo de su interpretación del término "ruta del directorio de .NET Framework", GetRuntimeDirectory podría no ser la información que está buscando ("directorio CLR" versus "directorio del que provienen los ensamblados 3.5").
¿Cómo puedo obtener la ruta del directorio .NET Framework dentro de mi aplicación C #?
La carpeta a la que me refiero es "C: / WINDOWS / Microsoft.NET / Framework / v2.0.50727"
Puede tomarlo del Registro de 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);
}
Una forma más fácil es incluir el ensamblado y uso de Microsoft.Build.Utilities
using Microsoft.Build.Utilities;
ToolLocationHelper.GetPathToDotNetFramework(
TargetDotNetFrameworkVersion.VersionLatest);
Valor de lectura de la clave [HKLM] / Software / Microsoft.NetFramework / InstallRoot : obtendrá "C: / WINDOWS / Microsoft.NET / Framework". A continuación, agregue la versión de marco deseada.