Tengo dos archivos exe en la misma carpeta, puedo ejecutar exe2 desde un botón en exe1. Hoy estaba observando a un cliente durante una sesión remota (servicios de terminal) y exe2 no pudo ejecutar el error "Archivo no encontrado", pero exe1 estaba en el mismo directorio cuando lo verificamos. Entonces, ¿debería usar AppDomain.CurrentDomain.BaseDirectory o System.Environment.CurrentDirectory ?
Gracias

string.GetFullPath(path)usa enEnvironment.CurrentDirectorylugar deCurrentDomain.BaseDirectory, para mi sorpresa.Respuestas:
Si desea buscar archivos en el mismo directorio que su aplicación,
AppDomain.CurrentDomain.BaseDirectoryes la opción correcta.Environment.CurrentDirectoryes un valor que puede cambiar y cambiará a lo largo de la ejecución de su aplicación. Por ejemplo, usando parámetros predeterminados, OpenFileDialog en WinForms cambiará este valor al directorio donde se seleccionó el archivo.fuente
AppDomain.CurrentDomain.BaseDirectorydevuelve el directorio desde donde se cargó el dominio de la aplicación actual.System.Environment.CurrentDirectorydevuelve el directorio del sistema actual.En tu caso
AppDomain.CurrentDomain.BaseDirectoryes la mejor solución.fuente
Deberías usar
AppDomain.CurrentDomain.BaseDirectory.Por ejemplo, en una aplicación de servicios de Windows:
System.Environment.CurrentDirectorydevolverá C: \ Windows \ system32Mientras
AppDomain.CurrentDomain.BaseDirectorydevolverá [ubicación de Application.exe]Otro factor importante a tener en cuenta es que
AppDomain.CurrentDomain.BaseDirectoryes una propiedad de solo lectura, mientras queEnvironment.CurrentDirectorypuede ser otra cosa si es necesario:// Change the directory to AppDomain.CurrentDomain.BaseDirectory Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;fuente
Según tengo entendido, deberías usar
BaseDirectory.CurrentDirectorypodría cambiar a lo largo de la ejecución del programa.fuente
En proyectos de prueba de Visual Studio 2010, si habilita la opción de implementación de Editar configuración de prueba, AppDomain.CurrentDomain.BaseDirectory apunta a la carpeta TestResults \ Out (no a bin \ debug). Aunque, la configuración predeterminada apunta a la carpeta bin \ debug.
Aquí encontré una respuesta convincente.
¿Por qué AppDomain.CurrentDomain.BaseDirectory no contiene "bin" en la aplicación asp.net?
fuente
Normalmente uso algo como:
string AppPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); AppPath = AppPath.Replace("file:\\", "");fuente
También he pasado por esto hace unos días, ya que estaba usando
ya que me estaba dando un problema en el servidor de producción pero funcionaba bien con mi servidor local,
Entonces, lo intenté con
Y funcionó para mí tanto en el Medio Ambiente.
Entonces, como todos ellos han dicho, siempre deberíamos ir con
mientras busca la ruta en el directorio del dominio actual.
echa un vistazo para más información
No se pudo encontrar una parte del error de ruta en el servidor
fuente