Я пытаюсь получить версию исполняемой сборки в C # 3.0, используя следующий код:
var assemblyFullName = Assembly.GetExecutingAssembly().FullName;
var version = assemblyFullName .Split(',')[1].Split('=')[1];
Есть ли другой правильный способ сделать это?
c#
.net
.net-assembly
user1
источник
источник
System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion
ClickOnce
версию, упомянутую @Justin, она указывается наPublish
вкладке в свойствах проекта (т. Е. Не относится к AssemblyVersion или AssemblyFileVersion).HomeController
, так в Razor:v@(Assembly.GetAssembly(typeof(MyWebProject.Mvc.Controllers.HomeController)).GetName().Version.ToString(2))
В MSDN метод Assembly.GetExecutingAssembly - это замечание о методе "getexecutingassembly", которое из соображений производительности следует вызывать этот метод только в том случае, если во время разработки не известно, какая сборка выполняется в данный момент.
Рекомендуемый способ получения объекта Assembly, представляющего текущую сборку, заключается в использовании
Type.Assembly
свойства типа, найденного в сборке.Следующий пример иллюстрирует:
Конечно, это очень похоже на ответ с вспомогательным классом «открытый статический класс CoreAssembly», но, если вы знаете хотя бы один тип выполняемой сборки, создание вспомогательного класса не обязательно, и это экономит ваше время.
источник
Замечания из MSDN http://msdn.microsoft.com/en-us/library/system.reflection.assembly.getentryassembly%28v=vs.110%29.aspx :
GetEntryAssembly
Метод может вернуться ,null
когда управляемая сборка была загружена из неуправляемого приложения. Например, если неуправляемое приложение создает экземпляр COM-компонента, написанного на C #,GetEntryAssembly
возвращается вызов метода из компонента C #null
, поскольку точкой входа для процесса был неуправляемый код, а не управляемая сборка.источник
GetEntryAssembly
(vsGetCallingAssembly
илиGetExecutingAssembly
), кажется, единственное, что работает, когда вызывается из справочной библиотеки.Это должно сделать:
источник
Я наконец остановился на
typeof(MyClass).GetTypeInfo().Assembly.GetName().Version
приложении netstandard1.6. Все остальные предложенные ответы представляли частичное решение. Это единственное, что дало мне именно то, что мне было нужно.Источник из комбинации мест:
https://msdn.microsoft.com/en-us/library/x4cw969y(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/2exyydhb(v=vs.110).aspx
источник
Product Version
может быть предпочтительным, если вы используете управление версиями через GitVersion или другое программное обеспечение управления версиями.Чтобы получить это из вашей библиотеки классов, вы можете позвонить
System.Diagnostics.FileVersionInfo.ProductVersion
:источник