El objeto de proceso está representado por la clase System.Diagnostics.Process en .NET. El nombre del archivo del archivo ejecutable actualmente se puede obtener llamando a Process.GetCurrentProcess().MainModule.FileName. Pero este método solo obtiene el nombre del archivo. Si el directorio de trabajo no se cambia durante la ejecución del programa, puede llamar al método System.IO.Path para obtener la ruta absoluta. Sin embargo, el directorio actual también se puede obtener a través de Environment.CurrentDirectory, y muchos programas cambiarán el directorio de trabajo cuando utilicen Open Dialog para abrir un archivo, lo que hará que este mecanismo sea ineficaz.
Si está en una aplicación de Windows Forms, la aplicación actual también se representa como un objeto System.Windows.Forms.Application. A través de sus propiedades estáticas Application.ExecutablePath y Application.StartupPath, se puede obtener la ruta y la ruta de inicio del archivo ejecutable. .
Pero si no está en una aplicación de Windows o en una biblioteca, incluso si aún se pueden obtener las propiedades del objeto Aplicación, aún necesita agregar una referencia al sistema de ensamblaje.Windows.Forms en el proyecto, lo cual es muy inconveniente. . En este momento, puede obtener el ensamblaje que se está ejecutando actualmente a través del método estático del ensamblaje, GetCallingAssembly o GetExecutingAssembly, y luego obtener la ubicación del ensamblaje a través de la ubicación de la clase Assembly.
Sin embargo, al utilizar Assembly, puede encontrar problemas de permisos. Al mismo tiempo, es posible que Assembly.GetCallingAssembly o Assembly.GetExecutingAssembly no obtengan la ubicación del archivo .exe. No es necesario que el ensamblado con un nombre seguro agregado al GAC esté en el mismo directorio que el .exe cuando se ejecuta.
Cuando se inicia el proceso .NET, se creará un AppDomain y todo el ensamblaje se cargará en un determinado AppDomain. El atributo SetupInformation se proporciona en AppDomain, que puede obtener cierta información cuando se inicia AppDomain. .CurrentDomain.SetupInformation. .ApplicationBase obtiene la ruta donde se encuentra la aplicación actual.
Después de obtener el directorio requerido mediante el método anterior, puede llamar al método System.IO.Path para obtener el nombre del archivo, el nombre del directorio, la ruta absoluta, etc. Deje de analizar cadenas de ruta y utilice la clase System.IO.Path en su lugar.
Al desarrollar aplicaciones en .NET, comprender la relación entre Proceso/Aplicación->Dominio de aplicación->Ensamblaje es muy útil para implementar la lógica correcta.