Necesito acceder al ensamblaje de mi proyecto en C # .NET2.0.
Puedo ver el GUID en el cuadro de diálogo 'Información de ensamblaje' en las propiedades del proyecto, y en este momento lo acabo de copiar a una constante en el código. El GUID nunca cambiará, por lo que esta no es una mala solución, pero sería bueno acceder a él directamente. ¿Hay alguna forma de hacer esto?
ctrl+.
es tu amigoSystem.AppDomain.DomainManager.get returned null.
por una aplicación de consola simple. Parece queAssembly.GetEntryAssembly()
es la forma preferida.Otra forma es utilizar Marshal.GetTypeLibGuidForAssembly .
Según msdn:
fuente
Assembly.ReflectionOnlyLoad
e incluso cuando no se cargan los ensamblados dependientes.System.Runtime.InteropServices.Marshal.GetTypeLibGuidForAssembly(System.Reflection.Assembly.GetExecutingAssembly()).ToString()
. Parece mucho más simple que el otro método. ¿Hay alguna desventaja?O, igual de fácil:
Funciona para mi...
fuente
Debería poder leer el atributo Guid del ensamblaje mediante reflexión. Esto obtendrá el GUID para el ensamblado actual
También puede reemplazar el GuidAttribute con otros atributos, si desea leer cosas como AssemblyTitle, AssemblyVersion, etc.
También puede cargar otro ensamblado (Assembly.LoadFrom y todos) en lugar de obtener el ensamblado actual, si necesita leer estos atributos de ensamblajes externos (por ejemplo, al cargar un complemento)
fuente
En caso de que alguien más esté buscando un ejemplo funcional listo para usar, esto es lo que terminé usando de acuerdo con las respuestas anteriores.
Actualizar:
Dado que esto ha recibido un poco de atención, decidí incluir otra forma de hacerlo que he estado usando. De esta forma te permite usarlo desde una clase estática:
fuente
Para obtener el appID, puede usar la siguiente línea de código:
Para ello, debe incluir el
System.Runtime.InteropServices;
fuente
No tuve suerte aquí con las otras respuestas, pero logré resolverlo con este buen trazador de líneas:
¡Espero que esto ayude!
fuente