2012-01-20 13 views
5

Tra i seguenti metodi per ottenere la directory di lavoro di un assembly in esecuzione, esiste una raccomandazione su quale è considerata Best Practice? Ho sentito dai miei sviluppatori che il metodo 1 non funziona su Windows 7 SP1 64-bit a volte, a meno che non venga eseguito con autorizzazioni elevate (Esegui come amministratore). Ma il Metodo 2 funziona sempre. C'è una ragione per cui il primo potrebbe fallire qualche volta?Environment.CurrentDirectory vs System.Reflection

Metodo 1:

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location()) 

Metodo 2:

Environment.CurrentDirectory 

risposta

6

Environment.CurrentDirectory è la strada da percorrere in quanto è lì per ottenere la directory di lavoro. Anche l'uso della riflessione è probabilmente più lento.

MA attenzione: i due metodi NON sono gli stessi: il metodo A restituisce sempre la directory in cui è memorizzato l'assembly, dove come Environment.CurrentDirectory fornisce la directory di lavoro corrente che può cambiare durante la durata dell'applicazione, come Environment.CurrentDirectory può anche essere utilizzato per impostare la directory di lavoro e anche l'altro metodo potrebbe cambiarlo (ad esempio aprire le finestre di dialogo di salvataggio/salvataggio).

+0

Grazie! Questa è una buona precauzione (ti ho appena votato). C'è una ragione per cui non riesce "a volte" su Win 7 64-bit Sp1? –

+0

@RomulusParthus: Mi dispiace non posso aiutarti su quello - potrebbe essere il luogo in cui è memorizzato l'assembly, ma questa è solo una supposizione selvaggia ... – ChrFin

+0

grazie. Nessun problema. –

Problemi correlati