У меня есть решение С#, которое ссылается на DLL, созданную мной из другого решения С#.
Достаточно легко определить версию моего решения с помощью Application.ProductVersion. Однако то, что мне действительно нужно, это способ определения файловой версии exe и dll отдельно в моей программе. Я хочу отобразить версии dll и exe в диалоговом окне About. Как выглядит код для этого?
Ответ 1
Самый простой способ - узнать тип ссылочной сборки:
AssemblyName name = typeof(MyCompany.MyLibrary.SomeType).Assembly.GetName();
Assembly.GetName возвращает AssemblyName, который имеет свойство Version, указывающее версию сборки.
В качестве альтернативы вы можете получить имена сборок всех сборок, на которые ссылается исполняющая сборка (то есть .exe):
AssemblyName[] names = Assembly.GetExecutingAssembly().GetReferencedAssemblies();
Ответ 2
Возможно, самым простым решением является следующее:
var version = Assembly.GetAssembly(typeof(SomeType)).GetName().Version;
где SomeType - это тип, который вы точно знаете, который определен в этой конкретной сборке. Затем вы можете вызвать .ToString() в этом объекте версии или посмотреть его свойства.
Конечно, это взорвется в огромном огненном шаре в тот момент, когда вы переместите свой тип в другую сборку. Если это возможно, вам понадобится более надежный способ найти объект сборки. Дайте мне знать, если это так.
Ответ 3
AssemblyInfo
класс имеет всю эту информацию, поэтому вам просто нужно получить ссылку на сборки в вашем коде. Например:
Assembly.GetExecutingAssembly.GetName.Version.ToString()
Вы можете получить другие сборки в проекте различными способами, например
var assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();