Wie kann ich den .NET Framework-Verzeichnispfad in meiner C # -Anwendung abrufen?
Der Ordner, auf den ich verweise, lautet "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727".
quelle
Wie kann ich den .NET Framework-Verzeichnispfad in meiner C # -Anwendung abrufen?
Der Ordner, auf den ich verweise, lautet "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727".
Der Pfad zum Installationsverzeichnis der für die aktuelle .NET-Anwendung aktiven CLR kann mithilfe der folgenden Methode abgerufen werden:
System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()
Ich würde dringend davon abraten, die Registrierung direkt zu lesen. Wenn eine .NET-Anwendung beispielsweise in 64-Bit-Systemen ausgeführt wird, kann die CLR entweder von "C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727" (AnyCPU, x64-Kompilierungsziele) oder von "C: \" geladen werden Windows \ Microsoft.NET \ Framework \ v2.0.50727 "(x86-Kompilierungsziel). Wenn Sie die Registrierung lesen , erfahren Sie nicht , welches der beiden Verzeichnisse von der aktuellen CLR verwendet wurde.
Eine weitere wichtige Tatsache ist, dass "die aktuelle CLR" für .NET 2.0-, .NET 3.0- und .NET 3.5-Anwendungen "2.0" ist. Dies bedeutet, dass der Aufruf von GetRuntimeDirectory () das Verzeichnis 2.0 auch in .NET 3.5-Anwendungen zurückgibt (die einige ihrer Assemblys aus dem 3.5-Verzeichnis laden). Abhängig von Ihrer Interpretation des Begriffs ".NET Framework-Verzeichnispfad" ist GetRuntimeDirectory möglicherweise nicht die gesuchte Information ("CLR-Verzeichnis" im Vergleich zu "Verzeichnis, aus dem 3.5 Assemblys stammen").
Eine einfachere Möglichkeit besteht darin, die Assembly und Verwendung von Microsoft.Build.Utilities einzuschließen
using Microsoft.Build.Utilities; ToolLocationHelper.GetPathToDotNetFramework( TargetDotNetFrameworkVersion.VersionLatest);
quelle
Sie können es aus der Windows-Registrierung abrufen:
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); }
Quelle
quelle
Lesen Sie den Wert des Schlüssels [HKLM] \ Software \ Microsoft.NetFramework \ InstallRoot - Sie erhalten "C: \ WINDOWS \ Microsoft.NET \ Framework". Fügen Sie dann die gewünschte Framework-Version hinzu.
quelle