在 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 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
。当我更改该值并重新启动(构建)应用程序时,新版本会显示在那里。
我使用了不同的方法,如 中所述,它给了我一个 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 解决方案的版本。
如何显示 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 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
。当我更改该值并重新启动(构建)应用程序时,新版本会显示在那里。
我使用了不同的方法,如 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 解决方案的版本。