繁体   English   中英

在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)

根据此声明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 当我更改该值并重新启动(构建)应用程序时,会显示新版本。

由于Platform Abstractions与ASP.NET Core 1一起提供 ,并且已从ASP.NET Core 2及更高版本中删除,因此如果您使用的是版本2或更高版本,则必须替换此行:

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

这一个:

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

在上一个链接页面的“替换API用法”部分中指定。

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

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

它也会返回正确的后缀版本,例如“2.0.1-dev01”

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

将设置“从父解决方案获取版本”的所有包含项目的Version属性。

不理想,但它允许您在一个地方管理版本,以获得版本锁定的多项目解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM