Отобразить версию проекта в приложении ASP.NET MVC Core (RC2)
Как отобразить версию приложения из project.json?
Я использую gulp-bump
для автоинкрементной версии, но я не могу показать последнюю версию. Вот что я пытаюсь:
@(Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default.Application.ApplicationVersion)
Это не работает, он отображает "1.0.0
" вместо реального значения из project.json
Я также пробовал это, но похоже, что он больше не работает в RC2:
@inject Microsoft.Extensions.PlatformAbstractions.IApplicationEnvironment appEnv
My version number is @(appEnv.ApplicationVersion)
Ответы
Ответ 1
По это объявление, IApplicationEnvironment
больше не существует.
Вы все равно можете получить доступ к ApplicationVersion
статически, используя:
Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default.Application.ApplicationVersion
Это работает для меня. Мой project.json
выглядит следующим образом:
{
"version": "1.0.0.2",
// all the rest
}
И в моем индексном представлении у меня есть следующая строка вверху:
@Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default.Application.ApplicationVersion
И я правильно получаю 1.0.0.2
в выводе. И когда я меняю это значение и перезапускаю (строят) приложение, там отображается новая версия.
Ответ 2
Поскольку Абстракции платформы были обловлены с помощью ASP.NET Core 1 и были удалены из ASP.NET Core 2 и выше, повторно используя версию 2 или выше, вы должны заменить эту строку:
Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default.Application.ApplicationVersion
с этим:
System.Reflection.Assembly.GetEntryAssembly().GetName().Version
как указано в разделе "Замена использования API" на предыдущей связанной странице.
Ответ 3
Я использовал другой подход, как указано в этом ответе, который дал мне версию SemVer (1.0.0), которая на самом деле находится в моем project.json
, а не 1.0.0.0, который возвращается принятым ответом. Таким образом, код будет выглядеть следующим образом:
var runtimeVersion = typeof(Startup)
.GetTypeInfo()
.Assembly
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()
.InformationalVersion;
Он также возвращает правильные суффиксные версии, т.е. что-то вроде "2.0.1-dev01"
Ответ 4
Это сработало для меня .NET Core 2.0.5.
Код:
var assemblyVersion = System.Reflection.Assembly.GetEntryAssembly().GetCustomAttribute<System.Reflection..AssemblyInformationalVersionAttribute>().InformationalVersion;
Console.WriteLine(assemblyVersion);
myproject.csproj
<PropertyGroup>
<VersionPrefix>1.0.0.1</VersionPrefix>
<VersionSuffix>alpha</VersionSuffix>
</PropertyGroup>
выходы
1.0.0.1-alpha
Ответ 5
Если вы оказались здесь и пытаетесь управлять версиями проекта через версию решения.
Добавление файла Directory.Build.props
в каталог решения, содержащий:
<Project>
<PropertyGroup>
<VersionPrefix>1.2.3</VersionPrefix>
</PropertyGroup>
</Project>
Устанавливает свойство Version всех включенных проектов, которые "получают версию из родительского решения".
Не идеально, но позволяет управлять версией в одном месте для многопроектного решения с заблокированной версией.