2010-01-25 5 views
10

J'ai une solution C#, qui fait référence à une DLL que j'ai créée à partir d'une solution C# différente.Déterminer la version du fichier dll référencé en C#

Il est assez facile de déterminer la version du produit de ma solution avec Application.ProductVersion. Cependant, ce dont j'ai vraiment besoin, c'est d'un moyen de déterminer la version du fichier de l'exe et de la DLL séparément, dans mon programme. Je veux afficher les versions du fichier dll et exe dans ma boîte de dialogue À propos de. À quoi ressemblerait le code pour faire cela?

Répondre

18

La façon la plus simple est que si vous connaissez un type dans l'ensemble référencé:

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

Assembly.GetName retourne un AssemblyName qui possède une propriété Version indiquant la version de l'assemblage.

Vous pouvez obtenir les noms d'assemblage de tous les ensembles référencés par l'assemblée d'exécution (c.-à-.exe):

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

Merci; Je me suis dit qu'il devait y avoir un moyen simple de le faire dans .NET mais je n'avais pas réussi à le trouver. Quand je cherchais une solution, je pense que ce qui m'avait lancé était GetName() ... Je ne l'ai même pas regardé, parce que je supposais que ça retournerait juste une chaîne ou quelque chose comme ça. –

3

Peut-être la solution la plus simple est la suivante:

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

où SomeType est un type que vous connaissez à coup sûr qui est défini dans cet assembly particulier. Vous pouvez ensuite appeler .ToString() sur ce version object ou consulter ses propriétés.

Bien sûr, cela va exploser dans une énorme boule de feu au moment où vous déplacez votre type dans un autre assemblage. Si c'est possible, vous aurez besoin d'une méthode plus robuste pour trouver l'objet d'assemblage. Faites-moi savoir si c'est le cas.

2

La classe AssemblyInfo possède toutes ces informations, il vous suffit donc d'obtenir une référence à l'assembly dans votre code. Par exemple:

Assembly.GetExecutingAssembly.GetName.Version.ToString() 

Vous pouvez obtenir les autres assemblées du projet de diverses manières, par exemple

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

Questions connexes