В AssemblyInfo
наличии есть две версии сборки:
AssemblyVersion
: Укажите версию атрибутивной сборки.AssemblyFileVersion
Указывает компилятору использовать определенный номер версии для ресурса версии файла Win32. Версия файла Win32 не обязательно должна совпадать с номером версии сборки.
Я могу получить Assembly Version
с помощью следующей строки кода:
Version version = Assembly.GetEntryAssembly().GetName().Version;
Но как я могу получить Assembly File Version
?
c#
.net
assemblies
version
Enyra
источник
источник
Ответы:
Смотрите мой комментарий выше с просьбой разъяснить, что вы действительно хотите. Надеюсь, это оно:
источник
FileVersionInfo
толькоstring
свойства и нетVersion
свойств?Assembly.GetEntryAssembly()
возвращает NULL, например, в контексте надстроек Office, а также во многих других случаях. Кроме того, если вы думаете о надстройках / плагинах - EntryAssembly является хост-приложением, и чаще всего вам нужна версия YourCode (TM) :) Помимо этого, стоит добавить к этому ответу, чтоassembly.Location
используемый в ответе также может быть нулевым (т.е. первый случайный случай гуглил: github.com/Azure/azure-functions-host/issues/1233 ) и это, вероятно, случается даже чаще, чем нулевая запись-сборка.Существует три версии : сборка , файл и продукт . Они используются разными функциями и принимают разные значения по умолчанию, если вы не укажете их явно.
источник
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")]
AssemblyFileVersion
не может использовать*
суффиксную нотацию. :( Для этого нужны все четыре числа.[assembly: AssemblyFileVersion("2.0.0.1")]
Когда я хочу получить доступ к версии файла приложения (что установлено в Сборочной информации -> Версия файла), скажем, чтобы установить для него текст метки при загрузке формы для отображения версии, я только что использовал
источник
ОБНОВЛЕНИЕ: Как упомянуто Ричардом Граймсом в моем процитированном посте , @Iain и @Dmitry Lobanov, мой ответ верен в теории, но неверен на практике.
Как я должен был помнить из бесчисленных книг и т. Д., В то время как каждый устанавливает эти свойства, используя
[assembly: XXXAttribute]
, они компилируются и помещаются вVERSIONINFO
ресурс.По вышеуказанной причине вам нужно использовать подход в ответе @ Xiaofu, поскольку атрибуты удаляются после извлечения сигнала из них.
(С http://bytes.com/groups/net/420417-assemblyversionattribute - как уже отмечалось, если вы ищете другой атрибут, замените его на приведенный выше)
источник
AssemblyName.Version
только через свойство. Но с любым другим атрибутом это правильный способAssemblyInformationalVersionAttribute
вместоAssemblyVersionAttribute
.net core 3.1Использовать этот:
Или это:
источник