2010-08-11 14 views
51

Ich brauche den bin-Pfad der ausführenden Baugruppe. Wie bekommst du es? Ich habe einen Ordner Plugins in dem Bin/Debug und ich brauche die LageWie bekomme ich Bin Path?

+0

Warum Sie diese brauchen? Warum hat die Anwendung den Pfad nicht bereits, scheint sie die Baugruppe zu finden? Wie sieht Ihre Bereitstellung aus? – McKay

Antwort

73

Hier ist zu erhalten, wie Sie den Ausführungspfad der Anwendung erhalten:

var path = System.IO.Path.GetDirectoryName( 
     System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); 

MSDN hat eine vollständige Referenz auf how to determine the Executing Application's Path.

Beachten Sie, dass der Wert in path in Form von file:\c:\path\to\bin\folder vorliegen wird. Vor dem Verwenden des Pfads müssen Sie daher möglicherweise die file:\ von der Vorderseite entfernen. Z.B .:

path = path.Substring(6); 
+0

Hallo, danke für deine schnelle Antwort. Warum ist es so, dass wenn ich den Pfad fest codiere, findet er es und wenn ich den folgenden Code mache, tut es das nicht. Der einzige Unterschied, den ich sehen kann, ist das "\\". Fehle ich etwas? var binpath = Pfad.GetDirectoryName (Assembly.GetExecutingAssembly(). GetName(). CodeBase); var fullpath = Pfad.Combine (binpath, folderName); if (! Directory.Exists (vollständiger Pfad)) return; – user9969

+6

In meinem Fall war das Problem, dass der System.IO.Path.GetDirectoryName() einen Pfad mit einer "file: \\" am Anfang zurückgibt. Ich habe es einfach von der Saite entfernt und alles hat funktioniert. Diese –

+0

scheint zu gehen, um das aus Verzeichnis – Demodave

50

Sie könnten dies tun

Assembly ass = Assembly.GetExecutingAssembly(); 
    string path = System.IO.Path.GetDirectoryName(ass.Location); 
+6

Oder das! 'System.IO.Path.GetDirectoryName (Assembly.GetExecutingAssembly(). Location)' – GONeale

+4

Scheint nicht zu funktionieren, wenn Sie einen NUnit-Test ausführen. Der Pfad verweist in diesem Fall auf das TEMP-Verzeichnis. – tponthieux

+10

haha, süße Variable Name – JohnnyFun

6
var assemblyPath = Assembly.GetExecutingAssembly().CodeBase; 
7
Path.GetDirectoryName(Application.ExecutablePath) 

zB. Wert:

C:\Projects\ConsoleApplication1\bin\Debug 
+3

Hinweis: Diese Lösung ist für Windows.Forms nur – m1m1k

16

Das ist, was ich dies zu erreichen, verwendet:

System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, System.AppDomain.CurrentDomain.RelativeSearchPath ?? ""); 
+2

Dies funktionierte perfekt in IIS-Hosting und Winform, danke. – wchoward

Verwandte Themen