2010-10-21 17 views

Respuesta

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

Solo quería la ruta pero veo que este comando me da la ruta + nombre de archivo del exe. :-(Por otro lado, GetEntryAssembly(). Location da la ruta con "file: //" - Lo que necesitaba era 'AppDomain.CurrentDomain.BaseDirectory' – user799821

+12

Esto no funciona en un proyecto de Unit Test. GetEntryAssembly() es nulo . –

+9

System.Reflection.Assembly.GetExecutingAssembly(). La ubicación devuelve donde está ubicado el ensamblaje en ejecución, que puede o no estar donde se encuentra el ensamblado cuando no se está ejecutando. En el caso de ensambles de copia de sombra, obtendrá una ruta en un directorio temporal. System.Reflection.Assembly.GetExecutingAssembly(). CodeBase devolverá la ruta 'permenant' del ensamblado. – Cyrus

54

En un proyecto de Windows Forms:

Por la ruta completa (nombre de fichero incluido): string exePath = Application.ExecutablePath;
Por el camino solamente: string appPath = Application.StartupPath;

+2

"Application.StartupPath se efectuará mediante" Working Directory "si está configurado en el acceso directo de exe o si el proceso se inicia desde otra aplicación." – Pedro77

78

Además:

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

AppDomain.CurrentDomain.BaseDirectory funciona en un proyecto de prueba de unidad. –

+0

funciona como encanto para mí .... –

2

en Visualstudio 2008 puede usar este código:

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

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

Esa no es la respuesta correcta. Le dará una cadena como "file: // foo" – dyatchenko

+0

También terminará con ArgumentException en 'System.IO.Path.GetDirectoryName' – benderto

Cuestiones relacionadas