2011-06-05 18 views
10

Estoy buscando para obtener el directorio de mi aplicación, parece ser diferente de la C# normal?mono C# get application ruta

Como en Path.GetDirectoryName(Application.ExecutablePath) no funciona.

Respuesta

26

Una solución correcta y multiplataforma habría

Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) 

Tenga en cuenta que tanto Environment.CurrentDirectory y Assembly.GetExecutingAssembly().Location (más exactamente, el directorio de la misma) son semánticamente mal, incluso aunque a menudo son - pero no siempre - el mismo directorio:

  • el directorio actual es el "directorio de trabajo" y se puede cambiar en cualquier momento, como lo hace el comando "cd" en un shell.
  • El ensamblaje de ejecución es el conjunto que contiene el código que se está ejecutando actualmente, y puede o no estar en el mismo directorio que la aplicación real. Por ejemplo, si su aplicación es "A.exe", que tiene una dependencia "B.dll", y algún código en B.dll llama al Assembly.GetExecutingAssembly(), resultará en "/path/to/B.dll".
1

Trate Assembly.GetExecutingAssembly().Location

+1

El montaje no me da nada, ¿qué debería incluir para darme acceso al montaje? – flyboarder

+1

'System.Reflection' –

+0

ah bien, ya lo intento, gracias. – flyboarder