2010-10-21 12 views

risposta

147
System.Reflection.Assembly.GetEntryAssembly().Location; 
+78

Volevo solo il percorso ma vedo che questo comando mi dà il percorso + nomefile dell'exe. :-(D'altra parte GetEntryAssembly(). Location dà il percorso con "file: //" - Quello che mi serviva era 'AppDomain.CurrentDomain.BaseDirectory' – user799821

+12

Questo non funziona in un progetto Unit Test. GetEntryAssembly() è null –

+9

System.Reflection.Assembly.GetExecutingAssembly(). La posizione restituisce dove si trova attualmente l'assembly in esecuzione, che può essere o non essere dove si trova l'assembly quando non è in esecuzione. Nel caso di assembly di copia shadow, si otterrà un percorso in una directory temporanea System.Reflection.Assembly.GetExecutingAssembly(). CodeBase restituirà il percorso "permenant" dell'assembly – Cyrus

54

In un progetto Windows Form:

Per il percorso completo (nome compreso): string exePath = Application.ExecutablePath;
Per il percorso unico: string appPath = Application.StartupPath;

+2

"Application.StartupPath verrà eseguito da" Directory di lavoro "se è impostato nel collegamento exe, oppure il processo viene avviato da un'altra app." – Pedro77

78

Inoltre:

AppDomain.CurrentDomain.BaseDirectory 
Assembly.GetEntryAssembly().Location 
+18

AppDomain.CurrentDomain.BaseDirectory funziona in un progetto Test unità. –

+0

funziona come fascino per me .... –

2

in visualstudio 2008 è possibile utilizzare questo codice:

var _assembly = System.Reflection.Assembly 
       .GetExecutingAssembly().GetName().CodeBase; 

    var _path = System.IO.Path.GetDirectoryName(_assembly) ; 
+0

Questa non è la risposta corretta. Ti darà una stringa come "file: // foo" – dyatchenko

+0

Inoltre finirà con ArgumentException in 'System.IO.Path.GetDirectoryName' – benderto

Problemi correlati