Ich muss zum Bin-Pfad der ausführenden Assembly gehen. Wie bekommst du es? Ich habe einen Ordner Plugins in der Bin / Debug und ich muss den Speicherort erhalten
Warum brauchst du das? Warum hat die Anwendung den Pfad nicht bereits, sie schien die Baugruppe in Ordnung zu finden? Wie sieht Ihre Bereitstellung aus?
McKay
Antworten:
118
So erhalten Sie den Ausführungspfad der Anwendung:
var path = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
Beachten Sie, dass der Wert in pathdie Form file:\c:\path\to\bin\folderhat. Bevor Sie den Pfad verwenden, müssen Sie möglicherweise file:\die Vorderseite entfernen. Z.B:
Hallo, danke für deine prompte Antwort. Warum ist es so, dass wenn ich den Pfad fest codiere, er gefunden wird und wenn ich den folgenden Code mache, dies nicht der Fall ist. Der einzige Unterschied, den ich sehen kann, ist das "\\". Vermisse ich etwas var binpath = Path.GetDirectoryName (Assembly.GetExecutingAssembly (). GetName (). CodeBase); var fullpath = Path.Combine (binpath, folderName); if (! Directory.Exists (fullpath)) return;
user9969
6
In meinem Fall bestand das Problem darin, dass System.IO.Path.GetDirectoryName () einen Pfad mit einer "Datei: \\" am Anfang zurückgibt. Ich habe es gerade von der Schnur entfernt und alles hat funktioniert.
Heitor Corrêa
Dies scheint in das Out-Verzeichnis zu gehen
Demodave
1
path = System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly (). CodeBase); das hat bei mir
funktioniert
6
Ich schlage vor, .Replace ("file: \\", "") zu verwenden, um das Dateipräfix zu entfernen, da es spezifischer für das Problem ist.
Dies funktionierte perfekt in IIS-Hosting und Winform, danke.
Dynamiclynk
Vielen Dank! Dies scheint für die ASP.NET-App und die Konsolen-App zu funktionieren. In asp.net RelativeSearchPathtatsächliche Ordner „sind“ und in der Konsole App enthält das ist nullund BaseDirectorytatsächlich „ist“ Pfad enthält.
Mariusz Pawelski
8
var assemblyPath = Assembly.GetExecutingAssembly().CodeBase;
Antworten:
So erhalten Sie den Ausführungspfad der Anwendung:
var path = System.IO.Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
MSDN enthält eine vollständige Referenz zum Ermitteln des Pfads der ausführenden Anwendung .
Beachten Sie, dass der Wert in
path
die Formfile:\c:\path\to\bin\folder
hat. Bevor Sie den Pfad verwenden, müssen Sie möglicherweisefile:\
die Vorderseite entfernen. Z.B:path = path.Substring(6);
quelle
Du könntest das tun
Assembly asm = Assembly.GetExecutingAssembly(); string path = System.IO.Path.GetDirectoryName(asm.Location);
quelle
System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
Dies habe ich verwendet, um dies zu erreichen:
System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, System.AppDomain.CurrentDomain.RelativeSearchPath ?? "");
quelle
RelativeSearchPath
tatsächliche Ordner „sind“ und in der Konsole App enthält das istnull
undBaseDirectory
tatsächlich „ist“ Pfad enthält.var assemblyPath = Assembly.GetExecutingAssembly().CodeBase;
quelle
z.B. Wert:
quelle
var path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)?.Replace("file:\\", "");
quelle