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

В AssemblyInfo имеются две версии сборки:

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

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

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

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

+653
26 мая '09 в 8:19
источник поделиться
6 ответов

Смотрите мой комментарий выше, прося уточнить, что вы действительно хотите. Надеюсь, это он:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location);
string version = fvi.FileVersion;
+794
26 мая '09 в 8:26
источник

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

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;
+177
22 окт. '09 в 8:51
источник

Связанные вопросы


Похожие вопросы

Когда я хочу получить доступ к версии файла приложения (что задано в "Сведения о сборке" → "Версия файла" ), скажем, чтобы установить для него текст ярлыка на загрузке формы для отображения версии, я только что использовал

versionlabel.Text = "Version " + Application.ProductVersion;
+59
25 февр. '13 в 17:11
источник

ОБНОВЛЕНИЕ: Как упомянуто Ричардом Граймсом в моем цитируемом посте, @Iain и @Dmitry Lobanov, мой ответ верен в теории, но неверен на практике.

Как я должен был помнить из бесчисленных книг и т.д., В то время как каждый устанавливает эти свойства, используя [assembly: XXXAttribute], они подвергаются сильному захвату компилятором и помещаются в ресурс 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 - как уже отмечалось, если вы ищете другой атрибут, замените его на приведенный выше)

+20
26 мая '09 в 8:24
источник

Используйте это:

((AssemblyFileVersionAttribute)Attribute.GetCustomAttribute(
    Assembly.GetExecutingAssembly(), 
    typeof(AssemblyFileVersionAttribute), false)
).Version;

Или это:

new Version(System.Windows.Forms.Application.ProductVersion);
+3
19 июн. '16 в 2:50
источник

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

-5
11 сент. '12 в 14:51
источник

Посмотрите другие вопросы по меткам или Задайте вопрос