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

时间:2016-06-13 19:52:57

标签: c# asp.net-mvc asp.net-core .net-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)

5 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:15)

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

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

这一个:

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

指定"替换API使用"上一个链接页面的部分。

答案 2 :(得分:11)

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

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

它也会返回正确的后缀版本,例如&#34; 2.0.1-dev01&#34;

答案 3 :(得分:6)

这对.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

答案 4 :(得分:0)

如果您最终在这里,并且尝试通过解决方案版本管理项目版本。

Directory.Build.props文件添加到解决方案目录,其中包含:

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

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

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