ruta obtener nombre ejecuta donde directorio aplicacion absoluta c# compact-framework versioning

ejecuta - Cómo obtener el nombre y la versión de la aplicación exe en C#Compact Framework



obtener ruta absoluta c# (4)

¿Puedes intentar usar FileInfo Class FileVersionInfo ? Espero que esto ayude ..

También puedes probar la API de Win32 como GetModuleFile ()

Mi aplicación tiene un exe y usa algunas DLL. Estoy escribiendo todo en C #.

En una DLL quiero escribir un método para obtener el nombre y la versión de la aplicación a partir de la información de la versión en el archivo ejecutable.

Entiendo que en .NET completo podría usar GetEntryAssembly, pero eso no está disponible en CF.


Obteniendo el nombre de la aplicación:

System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;

Obteniendo la versión:

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

Es posible que desee utilizar GetCallingAssembly() o obtener el ensamblado por tipo (por ejemplo, typeof(Program).Assembly ) si su DLL está intentando obtener la versión EXE y no tiene acceso inmediato a ella.

EDITAR

Si tiene una DLL y necesita el nombre del ejecutable, tiene algunas opciones, dependiendo del caso de uso. Puede obtener el ensamblaje de un tipo contenido en el ensamblado EXE, pero como sería raro que la DLL haga referencia al EXE, requiere el paso del EXE en un objeto de ese tipo.

Version GetAssemblyVersionFromObjectType(object o) { o.GetType().Assembly.GetName().Version; }

También podrías hacer una pequeña carrera como esta:

[DllImport("coredll.dll", SetLastError = true)] private static extern int GetModuleFileName(IntPtr hModule, StringBuilder lpFilename, int nSize); ... var name = new StringBuilder(1024); GetModuleFileName(IntPtr.Zero, name, 1024); var version = Assembly.LoadFrom(name.ToString()).GetName().Version;


Si desea crear un componente (.dll) en otra referencia de aplicación para obtener el nombre y la versión de la aplicación principal, puede usar esta forma:

Obteniendo el nombre de la aplicación principal:

AppDomain.CurrentDomain.DomainManager.EntryAssembly.GetName().Name;

Obteniendo la versión:

AppDomain.CurrentDomain.DomainManager.EntryAssembly.GetName().Version.ToString();

Obtención del nombre completo (contiene: nombre de la aplicación, versión de la aplicación, cultura, publicKeyToken):

AppDomain.CurrentDomain.DomainManager.EntryAssembly.FullName;

Pero en esta solución hay un problema, esto depende del servidor y si se ejecuta directamente desde el archivo ejecutable, se producirá el error. Por lo tanto las siguientes elecciones:

Obteniendo el nombre de la aplicación principal:

string appName = AppDomain.CurrentDomain.FriendlyName; appName = appName.Substring(0, appName.IndexOf(''.''));

Obteniendo la versión:

System.Windows.Forms.Application.ProductVersion;


System.Reflection.Assembly.GetEntryAssembly().GetName().Version;

Esta función le dará la versión de la aplicación desde donde se cargan otras bibliotecas.

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

Esto dará versión de la biblioteca actual. Si llama a esto en la biblioteca de aplicaciones, obtendrá la versión de la aplicación y si llama a esto en una DLL, entonces obtendrá la versión de la DLL.

Así que en mi opinión, System.Reflection.Assembly.GetEntryAssembly().GetName().Version; Es la función de currect para usar.