在 ASP.NET MVC 核心应用程序 (RC2) 中显示项目版本

Display project version in ASP.NET MVC Core application (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)

根据 this announcementIApplicationEnvironment 不再存在。

您仍然可以使用以下方法静态访问 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。当我更改该值并重新启动(构建)应用程序时,新版本会显示在那里。

我使用了不同的方法,如 中所述,它给了我一个 SemVer 版本 (1.0.0),它实际上在我的 project.json 中,而不是 1.0.0.0,它由返回接受的答案。所以代码将是:

var runtimeVersion = typeof(Startup)
            .GetTypeInfo()
            .Assembly
            .GetCustomAttribute<AssemblyInformationalVersionAttribute>()
            .InformationalVersion;

它 returns 也能修正带后缀的版本,例如“2.0.1-dev01”

Platform Abstractions were obly shipped with ASP.NET Core 1 并已从 ASP.NET 核心 2 及更高版本中删除,如果您使用的是版本 2 或更高版本,则必须替换此行:

Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default.Application.ApplicationVersion

这个:

System.Reflection.Assembly.GetEntryAssembly().GetName().Version

如上一个链接页面的 "Replacing API usage" 部分所述。

这对我适用于 .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

如果您在此处结束并且您正在尝试通过解决方案版本管理项目版本。

Directory.Build.props 文件添加到包含以下内容的解决方案目录:

<Project>
  <PropertyGroup>
    <VersionPrefix>1.2.3</VersionPrefix>
  </PropertyGroup>
</Project>

将设置 'Get version from parent solution' 所有包含项目的版本 属性。

不理想,但它允许您在一个地方管理版本锁定 multi-project 解决方案的版本。