78 votes

L'obtention de la .NET Framework chemin d'accès au répertoire

Comment puis-je obtenir de l' .NET Framework chemin d'accès au répertoire à l'intérieur de mon application en C#?

Le dossier que je me réfère est "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"

185voto

Milan Gardian Points 6596

Le chemin d'accès au répertoire d'installation de la CLR active pour le courant .NET application peut être obtenu en utilisant la méthode suivante:

System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()

Je voudrais vivement les conseils contre la lecture directement le registre. Par exemple, lorsqu'un .NET application est en cours d'exécution dans les systèmes 64 bits, le CLR peut être chargé à partir d' "C:\Windows\Microsoft.NET\Framework64\v2.0.50727" (AnyCPU, x64 compilation cibles) ou de "C:\Windows\Microsoft.NET\Framework\v2.0.50727" (x86 compilation cible). La lecture du registre sera pas vous dire laquelle des deux répertoires a été utilisé par le CLR.

Un autre fait important est que "l'actuel CLR" sera "2.0".NET 2.0, .NET 3.0 et .NET 3.5 applications. Cela signifie que le GetRuntimeDirectory() va retourner 2.0 répertoire même à l'intérieur .NET 3.5 applications (qui charge certains de leurs assemblées à partir de 3,5 répertoire). Selon votre interprétation du terme ".NET Framework chemin d'accès au répertoire", GetRuntimeDirectory peut-être pas l'information que vous recherchez ("CLR répertoire" et "répertoire à partir duquel 3.5 assemblées sont à venir à partir de").

44voto

Brian Rudolph Points 3403

Un moyen plus facile est d'inclure le Microsoft.Construire.Utilitaires de montage et d'utilisation

using Microsoft.Build.Utilities;
ToolLocationHelper.GetPathToDotNetFramework(
        TargetDotNetFrameworkVersion.VersionLatest);

2voto

CMS Points 315406

Vous pouvez la saisir dans le Registre 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

-3voto

Ihar Voitka Points 497

Lire la valeur de la [HKLM]\Software\Microsoft.NetFramework\InstallRoot - clés, vous obtiendrez "C:\WINDOWS\Microsoft.NET\Framework". Puis ajouter souhaité cadre de version.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X