2010-01-25 34 views
10

Tengo una solución C#, que hace referencia a una DLL que he creado a partir de una solución de C# diferente.Determinar la versión de archivo dll a la que se hace referencia en C#

Es bastante fácil determinar la versión del producto de mi solución con Application.ProductVersion. Sin embargo, lo que realmente necesito es una forma de determinar la versión de archivo del exe y el dll por separado, dentro de mi programa. Quiero mostrar las versiones del archivo dll y exe en mi diálogo Acerca de. ¿Cómo se vería el código para hacer esto?

Respuesta

18

La forma más sencilla es si usted sabe un tipo en el ensamblaje de referencia:

AssemblyName name = typeof(MyCompany.MyLibrary.SomeType).Assembly.GetName(); 

Assembly.GetName devuelve un AssemblyName que tiene una Version propiedad que indica la versión del ensamblado.

Como alternativa, puede obtener los nombres de montaje de todos los ensamblados de referencia por el conjunto de la ejecución (es decir, el .exe):

AssemblyName[] names = Assembly.GetExecutingAssembly().GetReferencedAssemblies(); 
+0

Gracias; Pensé que tenía que haber una forma simple de hacer esto en .NET pero no había podido encontrarlo. Cuando estaba buscando una solución, creo que lo que me arrojó fue GetName() ... Ni siquiera lo miré, porque supuse que simplemente devolvería una cadena o algo así. –

3

Tal vez la solución más sencilla es la siguiente:

var version = Assembly.GetAssembly(typeof(SomeType)).GetName().Version; 

donde SomeType es un tipo seguro que se define en ese ensamblaje en particular. Luego puede llamar a .ToString() en este version object o ver sus propiedades.

Por supuesto, esto explotará en una gran bola de fuego en el momento en que mueva su tipo a otro ensamblaje. Si esta es una posibilidad, necesitará una forma más robusta de encontrar el objeto de ensamblaje. Déjame saber si este es el caso.

2

La clase AssemblyInfo tiene toda esta información, por lo que solo necesita obtener una referencia del ensamblado en su código. Por ejemplo:

Assembly.GetExecutingAssembly.GetName.Version.ToString() 

Usted puede obtener los otros conjuntos en el proyecto de diversas maneras, por ejemplo

var assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();

Cuestiones relacionadas