una ruta obtener nombre net imagen escritorio directorio combine asp archivo actual absoluta c# .net frameworks directory

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); }

Source


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.