una ruta raiz pero net mypath física esperaba ejecutable aplicacion acceso absoluta vb.net visual-studio-2008 executable desktop-application

vb.net - pero - ruta raiz c#



¿Directorio ejecutable desde donde se ejecuta la aplicación? (6)

Necesito obtener la ruta (no el ejecutable) desde donde se ejecuta mi aplicación:

System.AppDomain.CurrentDomain.BaseDirectory()

Cuando ejecuto la declaración anterior con & "/images/image.jpg" en mi máquina local, funciona bien, pero cuando instalo la aplicación en otra máquina, dice que no puede encontrar el archivo y que hay mucha información de ruta adicional.

Solo necesito el directorio donde se ejecuta la aplicación. Estoy codificando en VB.NET con Visual Studio 2008.

¡Gracias!


Esta es la primera publicación en Google, así que pensé en publicar diferentes formas que están disponibles y cómo se comparan. Desafortunadamente, no puedo averiguar cómo crear una tabla aquí, así que es una imagen. El código para cada uno está debajo de la imagen con nombres completos.

My.Application.Info.DirectoryPath Environment.CurrentDirectory System.Windows.Forms.Application.StartupPath AppDomain.CurrentDomain.BaseDirectory System.Reflection.Assembly.GetExecutingAssembly.Location System.Reflection.Assembly.GetExecutingAssembly.CodeBase New System.UriBuilder(System.Reflection.Assembly.GetExecutingAssembly.CodeBase) Path.GetDirectoryName(Uri.UnescapeDataString((New System.UriBuilder(System.Reflection.Assembly.GetExecutingAssembly.CodeBase).Path))) Uri.UnescapeDataString((New System.UriBuilder(System.Reflection.Assembly.GetExecutingAssembly.CodeBase).Path))


Necesitaba saber esto y vine aquí, antes de recordar la clase de Medio Ambiente.

En caso de que alguien más tuviera este problema, solo use este: Environment.CurrentDirectory .

Ejemplo:

Dim dataDirectory As String = String.Format("{0}/Data/", Environment.CurrentDirectory)

Cuando se ejecuta desde Visual Studio en el modo de depuración yeilds:

C:/Development/solution folder/application folder/bin/debug

Este es el comportamiento exacto que necesitaba, y es lo suficientemente simple y directo.


Podría usar la propiedad estática StartupPath de la clase de aplicación.


Puedes escribir lo siguiente:

Path.Combine(Path.GetParentDirectory(GetType(MyClass).Assembly.Location), "Images/image.jpg")


Dim P As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase) P = New Uri(P).LocalPath