[c#] Как получить версию файла сборки



Answers

Существует три версии : сборка , файл и продукт . Они используются различными функциями и принимают разные значения по умолчанию, если вы не указали их явно.

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;
Question

В AssemblyInfo есть две версии сборки:

  1. AssemblyVersion : укажите, какая версия сборки будет отнесена.
  2. AssemblyFileVersion : инструктирует компилятор использовать определенный номер версии для ресурса версии файла Win32. Версия версии Win32 не обязана быть такой же, как номер версии сборки.

Я могу получить Assembly Version со следующей строкой кода:

Version version = Assembly.GetEntryAssembly().GetName().Version;

Но как я могу получить Assembly File Version ?




ОБНОВЛЕНИЕ: Как упоминал Ричард Граймс в моем цитированном сообщении , @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 - как отмечено там, если вы ищете другой атрибут, замените это на выше)




Вы можете получить версию сборки с помощью My.Application.Info.Version




Related