2010-01-25 12 views
10

Ho una soluzione C#, che fa riferimento a una DLL creata da una diversa soluzione C#.Determina la versione del file dll di riferimento in C#

È abbastanza semplice determinare la versione del prodotto della mia soluzione con Application.ProductVersion. Tuttavia, quello di cui ho veramente bisogno è un modo per determinare separatamente la versione del file di exe e dll, all'interno del mio programma. Voglio visualizzare le versioni dei file dll ed exe nella mia finestra di dialogo Informazioni su. Come sarebbe il codice per farlo?

risposta

18

Il modo più semplice è se si conosce un tipo in assembly di riferimento:

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

Assembly.GetName restituisce un AssemblyName che ha una proprietà Version che indica la versione dell'assembly.

In alternativa, è possibile ottenere i nomi di assemblaggio di tutti gli assembly a cui fa riferimento il gruppo di esecuzione (ad esempio, l'exe):

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

Grazie; Ho pensato che ci fosse un modo semplice per farlo in .NET ma non ero riuscito a trovarlo. Quando stavo cercando una soluzione, penso che quello che mi ha gettato era GetName() ... non l'ho nemmeno guardato, perché pensavo che sarebbe bastato restituire una stringa o qualcosa del genere. –

3

Forse la soluzione più semplice è questa:

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

dove SomeType è un tipo che si sa per certo che è definito in quel particolare assembly. È quindi possibile chiamare .ToString() su questo version object o osservare le sue proprietà.

Naturalmente, questo esploderà in un'enorme palla di fuoco nel momento in cui sposti il ​​tuo tipo in un'altra assemblea. Se questa è una possibilità, sarà necessario un modo più robusto per trovare l'oggetto dell'assieme. Fammi sapere se questo è il caso.

2

La classe AssemblyInfo ha tutte queste informazioni, quindi è sufficiente ottenere un riferimento all'assembly nel codice. Per esempio:

Assembly.GetExecutingAssembly.GetName.Version.ToString() 

È possibile ottenere le altre assemblee nel progetto in vari modi, ad esempio

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

Problemi correlati