2016-06-28 13 views
0

Ich habe 2 Anwendung. Beispiel App1 und App2 Wenn ausgeführt, wird nomal App1 den ausführbaren Speicherort der Assembly anzeigen. Aber wenn ich App1 von App2 anrufe, gibt es App2 Startort zurück.C# Get Assembly ausführbares Verzeichnis

So, wie app1 Startpfad beim Aufruf App1 von App2 zu bekommen?

+2

Willkommen bei StackOverflow! Bitte zeigen Sie, was Sie versucht haben und was genau Sie wollen: "Startup-Pfad" oder "Montageort"? –

+0

Ich bekomme Start Pfad = Application.StartupPath. Wenn ich App1 nomal auf Pfad ausführen, true wahr Ort. Aber wenn ich App1 von App2 aus anrufe, wird der App2-Standort zurückgegeben. Also, wie App1 Startpfad zu bekommen, wenn ich App1 von App2 aufrufen? – TrungNV

+0

So ist es natürlich auch. Der StartupPath ist nicht der Pfad der Assembly, sondern das Arbeitsverzeichnis, von dem aus die App gestartet wurde. Wenn Ihre App2 das Arbeitsverzeichnis nicht ändert, hat App1 dieselbe Startoption. –

Antwort

2

Sie können das Verzeichnis der aktuell ausgeführten Assembly mit dieser bekommen:

string assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

GetExecutingAssembly() gibt die aktuell ausgeführten Assembly und Location ist der vollständige Pfad oder UNC-Pfad dieser Versammlung.

Path.GetDirectoryName() gibt das Verzeichnis eines vollständigen Pfads zurück.


Beachten Sie, dass der Pfad der Assembly nicht mit dem Startpfad identisch ist. Der Startpfad ist das Arbeitsverzeichnis, von dem aus Sie eine Anwendung gestartet haben. Wenn Ihre App das Arbeitsverzeichnis nicht ändert, haben alle Apps, die von der ersten App gestartet werden, denselben Startpfad.

+0

Kann nicht erhalten durch Zeichenfolge AssemblyPath = Path.GetDirectoryName (Assembly.GetExecutingAssembly(). Speicherort); es App2 Startpfad zurückgeben. – TrungNV