Schauen Sie sich diesen Pseudocode an:
string exe_path = system.get_exe_path()
print "This executable is located in " + exe_path
Wenn ich das obige Programm erstelle und die ausführbare Datei darin platziere C:/meow/
, wird sie bei This executable is located in C:/meow/
jeder Ausführung unabhängig vom aktuellen Arbeitsverzeichnis ausgedruckt.
Wie könnte ich dies mit leicht erreichen C#
?
c#
directory
executable
Dante May Code
quelle
quelle
Antworten:
MSDN hat einen Artikel , der sagt, zu verwenden
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
; Wenn Sie das Verzeichnis benötigen, verwenden Sie esSystem.IO.Path.GetDirectoryName
für dieses Ergebnis.Oder es gibt die kürzere
Application.ExecutablePath
Option "Ruft den Pfad für die ausführbare Datei ab, mit der die Anwendung gestartet wurde, einschließlich des Namens der ausführbaren Datei", sodass dies je nach Start der Anwendung möglicherweise etwas weniger zuverlässig ist.quelle
System.Path.GetDirectoryName( Assembly.GetExecutingAssembly().Location ) );
quelle
using System.Reflection; string myExeDir = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.ToString();
quelle
System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)
, was auch schneller ist."Ruft den Pfad oder den UNC-Speicherort der geladenen Datei ab, die das Manifest enthält."
Siehe: http://msdn.microsoft.com/en-us/library/system.reflection.assembly.location.aspx
quelle
Application
ist eine Klasse, die WPF-anwendungsspezifische Funktionen kapselt".var dir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Ich sprang ein, um die bestbewertete Antwort zu erhalten, und stellte fest, dass ich nicht das bekam, was ich erwartet hatte. Ich musste die Kommentare lesen, um herauszufinden, wonach ich suchte.
Aus diesem Grund veröffentliche ich die in den Kommentaren aufgeführte Antwort, um ihr die Belichtung zu geben, die sie verdient.
quelle
.GetEntryAssembly()
, nicht.GetExecutingAssembly()
.Angenommen, ich habe eine .config-Datei in der Konsolen-App und werde jetzt wie folgt.
Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\YourFolderName\\log4net.config";
quelle
Path.Combine
. Es gibt eine Menge Code, der in Mono von manuell kombinierten Pfaden wie diesem nicht richtig funktioniert.Auf meiner Seite habe ich mit einem Formularantrag verwendet:
Es nimmt den Startpfad der Anwendung.
quelle
Derjenige, der für mich funktioniert hat und nicht oben ist, war
Process.GetCurrentProcess().MainModule.FileName
.quelle