В AssemblyInfo
имеются две версии сборки:
AssemblyVersion
: укажите версию приписываемой сборки.AssemblyFileVersion
: инструктирует компилятор использовать определенный номер версии для ресурса версии файла Win32. Версия файла Win32 не обязательно должна быть такой же, как номер версии сборки.Я могу получить Assembly Version
со следующей строкой кода:
Version version = Assembly.GetEntryAssembly().GetName().Version;
Но как я могу получить Assembly File Version
?
Смотрите мой комментарий выше, прося уточнить, что вы действительно хотите. Надеюсь, это он:
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;
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;
[assembly: AssemblyVersion("2.0.*")]
Для использования fileVersion === [assembly: AssemblyFileVersion("2.0.*")]
И для использования productVersion === [assembly: AssemblyInformationalVersion("2.0.*")]
Последний может принимать строковый суффикс для совместимости с SemVer
: [assembly: AssemblyInformationalVersion("2.0.0-alpha")]
Когда я хочу получить доступ к версии файла приложения (что задано в "Сведения о сборке" → "Версия файла" ), скажем, чтобы установить для него текст ярлыка на загрузке формы для отображения версии, я только что использовал
versionlabel.Text = "Version " + Application.ProductVersion;
ОБНОВЛЕНИЕ: Как упоминал Ричард Граймс в мой цитированный пост, @Iain и @Dmitry Lobanov, мой ответ прав в теории, но неправильный на практике.
Как я должен был помнить из бесчисленных книг и т.д., в то время как один устанавливает эти свойства с помощью [assembly: XXXAttribute]
, они получают highjacked компилятором и помещаются в ресурс VERSIONINFO
.
По вышеуказанной причине вам нужно использовать подход в @Xiaofu answer, поскольку атрибуты удаляются после того, как сигнал был извлечен из них.
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);
Вы можете получить версию сборки с My.Application.Info.Version