Display project version in ASP.NET MVC Core application (RC2)

久未见 提交于 2019-11-28 11:57:09

As per this announcement, IApplicationEnvironment no longer exists.

You can still access the ApplicationVersion statically using:

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

It works for me. My project.json looks like this:

{
    "version": "1.0.0.2",
    // all the rest
}

And in my index view, I have the following line at the top:

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

And I correctly get 1.0.0.2 in the output. And when I change that value and restart (build) the application, the new version is shown there.

Since Platform Abstractions were obly shipped with ASP.NET Core 1 and has been removed from ASP.NET Core 2 and up, if you're using version 2 or above, you must replace this row:

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

with this one:

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

as specified in "Replacing API usage" section of the previous linked page.

Ilya Luzyanin

I used a different approach, as stated in this answer which gave me a SemVer version (1.0.0) which is actually in my project.json and not 1.0.0.0, which is returned by accepted answer. So the code would be:

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

It returns correct suffixed versions as well, i.e. something like "2.0.1-dev01"

This worked for me for .NET Core 2.0.5.

Code:

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>

outputs

1.0.0.1-alpha

If you end up here and you are trying to manage project versions through the solution version.

Adding a Directory.Build.props file to the solution directory containing:

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

Will set the Version property of all included projects that 'Get version from parent solution'.

Not ideal, but it allows you to manage the version in a single place for a version locked multi-project solution.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!