如何从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)
答案 0 :(得分:20)
根据this announcement,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
。当我更改该值并重新启动(构建)应用程序时,会在那里显示新版本。
答案 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属性。
不太理想,但是它允许您在一个地方管理版本,以实现版本锁定的多项目解决方案。