Как я могу получить версию файла сборки
на AssemblyInfo
есть две версии сборки:
-
AssemblyVersion
: укажите версию о том, что. -
AssemblyFileVersion
: указывает компилятору использовать определенный номер версии для ресурса версии файла Win32. Версия файла Win32 не должна совпадать с номером версии сборки.
Я могу получить Assembly Version
со следующей строкой кода:
Version version = Assembly.GetEntryAssembly().GetName().Version;
но как я могу получить Assembly File Version
?
6 ответов
см. мой комментарий выше с просьбой разъяснить, чего вы действительно хотите. Надеюсь, это он:
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;
здесь три версии: сборка, и продукт. Они используются различными функциями и принимают разные значения по умолчанию, если вы их явно не указываете.
string assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
string assemblyVersion = Assembly.LoadFile('your assembly file').GetName().Version.ToString();
string fileVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion;
string productVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;
когда я хочу получить доступ к версии файла приложения (что установлено в информации о сборке - > версия файла), скажем, чтобы установить текст метки для него при загрузке формы для отображения версии, я только что использовал
versionlabel.Text = "Version " + Application.ProductVersion;
UPDATE: как упоминалось Ричардом Граймсом в мой процитированный пост, @Iain и @Dmitry Lobanov, мой ответ верен в теории, но ошибочен на практике.
как я должен был запомнить из бесчисленных книг и т. д., в то время как эти свойства задаются с помощью [assembly: XXXAttribute]
, они получают highjacked компилятором и помещаются в VERSIONINFO
ресурсов.
по вышеуказанной причине вам нужно использовать подход в ответ@Xiaofu по мере удаления атрибутов после сигнала извлечь из них.
public static string GetProductVersion() { var attribute = (AssemblyVersionAttribute)Assembly .GetExecutingAssembly() .GetCustomAttributes( typeof(AssemblyVersionAttribute), true ) .Single(); return attribute.InformationalVersion; }
(от http://bytes.com/groups/net/420417-assemblyversionattribute - Как уже отмечалось, Если вы ищете другой атрибут, замените его на приведенный выше)
используйте этот:
((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
Assembly.GetExecutingAssembly(),
typeof(AssemblyFileVersionAttribute), false)
).Version;
или такой:
new Version(System.Windows.Forms.Application.ProductVersion);