Saltar al contenido

La mejor manera de obtener la ruta de la carpeta de la aplicación

Al fin luego de mucho batallar hemos hallado el resultado de esta duda que ciertos los usuarios de nuestra web presentan. Si deseas aportar alguna información no dejes de compartir tu comentario.

Solución:

AppDomain.CurrentDomain.BaseDirectory es probablemente el más útil para acceder a archivos cuya ubicación es relativa al directorio de instalación de la aplicación.

En una aplicación ASP.NET, este será el directorio raíz de la aplicación, no la subcarpeta bin, que es probablemente lo que normalmente desea. En una aplicación cliente, será el directorio que contenga el ejecutable principal.

En una aplicación VSTO 2005, será el directorio que contenga los ensamblados administrados por VSTO para su aplicación, no, digamos, la ruta al ejecutable de Excel.

Los demás pueden devolver directorios diferentes según su entorno; por ejemplo, consulte la respuesta de @ Vimvq1987.

CodeBase es el lugar donde se encontró un archivo y puede ser una URL que comienza con http://. En ese caso Location probablemente será el caché de descarga de ensamblaje. No se garantiza que CodeBase se establezca para ensamblados en la GAC.

ACTUALIZAR
Actualmente (.NET Core, .NET Standard 1.3+ o .NET Framework 4.6+) es mejor usar AppContext.BaseDirectory en vez de AppDomain.CurrentDomain.BaseDirectory. Ambos son equivalentes, pero ya no se admiten varios AppDomains.

  1. Application.StartupPathy 7 System.IO.Path.GetDirectoryName(Application.ExecutablePath) - Solo funcionará para la aplicación Windows Forms

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

    Te va a dar algo como: "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\legal-services\e84f415e\96c98009\assembly\dl3\42aaba80\bcf9fd83_4b63d101" que es donde está la página que está ejecutando.

  3. AppDomain.CurrentDomain.BaseDirectory para la aplicación web podría ser útil y devolverá algo como "C:\hg\Services\Services\Services.Website\" que es el directorio base y es bastante útil.

  4. System.IO.Directory.GetCurrentDirectory() y 5 Environment.CurrentDirectory

obtendrá la ubicación desde donde se disparó el proceso, por lo que para la aplicación web que se ejecuta en modo de depuración desde Visual Studio, algo así como "C:\Program Files (x86)\IIS Express"

  1. System.IO.Path.GetDirectoryName(
    System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)

obtendrá su ubicación donde .dll que está ejecutando el código es, para la aplicación web que podría ser "file:\C:\hg\Services\Services\Services.Website\bin"

Ahora, en el caso de, por ejemplo, la aplicación de consola, los puntos 2-6 serán el directorio donde .exe el archivo es.

Espero que esto te ahorre algo de tiempo.

Tenga en cuenta que no todos estos métodos devolverán el mismo valor. En algunos casos, pueden devolver el mismo valor, pero cuidado, sus propósitos son diferentes:

Application.StartupPath

devuelve el StartupPath parámetro (se puede configurar cuando se ejecuta la aplicación)

System.IO.Directory.GetCurrentDirectory()

devuelve el directorio actual, que puede ser o no la carpeta donde se encuentra la aplicación. Lo mismo va para Environment.CurrentDirectory. En caso de que esté utilizando esto en un archivo DLL, devolverá la ruta de donde se está ejecutando el proceso (esto es especialmente true en ASP.NET).

Calificaciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.