Frage Ermitteln der referenzierten DLL-Version in C #


Ich habe eine C # -Lösung, die auf eine DLL verweist, die ich aus einer anderen C # -Lösung erstellt habe.

Es ist einfach, die Produktversion meiner Lösung mit Application.ProductVersion zu bestimmen. Was ich jedoch wirklich brauche, ist eine Möglichkeit, die Dateiversion der EXE und der DLL separat innerhalb meines Programms zu bestimmen. Ich möchte die Dateiversionen von dll und exe in meinem Info-Dialog anzeigen. Wie würde der Code aussehen, um dies zu tun?


11
2018-01-25 20:13


Ursprung


Antworten:


Der einfachste Weg ist, wenn Sie einen Typ in der referenzierten Assembly kennen:

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

Assembly.GetName gibt ein zurück AssemblyName was hat a Ausführung Eigenschaft, die die Version der Assembly angibt.

Alternativ können Sie die Assemblynamen aller Assemblys abrufen, auf die von der ausführenden Assembly (d. H. Der EXE-Datei) verwiesen wird:

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

19
2018-01-25 20:21



Vielleicht die einfachste Lösung ist dies:

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

Wobei SomeType ein Typ ist, von dem Sie sicher wissen, dass er in dieser bestimmten Assembly definiert ist. Sie können dann .ToString () aufrufen Versionsobjekt oder schau dir seine Eigenschaften an.

Natürlich wird dies in einem riesigen Feuerball explodieren, sobald Sie Ihren Typ in eine andere Versammlung bewegen. Wenn dies eine Möglichkeit ist, benötigen Sie eine robustere Möglichkeit, das Assembly-Objekt zu finden. Lassen Sie mich wissen, wenn dies der Fall ist.


3
2018-01-25 20:22



Das AssemblyInfo Die Klasse enthält all diese Informationen. Sie müssen nur einen Verweis auf die Assembly in Ihrem Code abrufen. Beispielsweise:

Assembly.GetExecutingAssembly.GetName.Version.ToString()

Sie können die anderen Assemblys beispielsweise auf verschiedene Arten im Projekt abrufen

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


2
2018-01-25 20:23