获取Asp.Net Core 2 MVC ReleaseVersion

时间:2018-09-06 22:46:53

标签: asp.net-core-mvc asp.net-core-2.0

我正在尝试获取Asp.Net Core 2 MVC项目的Version属性的文本(2018.09.06,该文本在项目的选项对话框中捕获:

enter image description here

该值包含在项目的ReleaseVersion文件的.csproj元素中:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <RootNamespace>Project Foo</RootNamespace>
    <ReleaseVersion>2018.09.06</ReleaseVersion>
    <UserSecretsId>[GUID here]</UserSecretsId>
  </PropertyGroup>
  ...
</Project>

我已经尝试过了:

var version = System.Reflection.Assembly.GetEntryAssembly().GetName().Version;

但是它返回1.0.0.0

我正在使用.Net Core 2.0 Framework。

注意:Display project version in ASP.NET MVC Core application (RC2)的答案无效。

2 个答案:

答案 0 :(得分:0)

我在项目的/PropertyGroup/VersionPrefix文件中添加了.csproj元素:

<PropertyGroup>
  <VersionPrefix>1.19.2</VersionPrefix>
  <VersionSuffix></VersionSuffix>
</PropertyGroup>

然后获取值:

string Version = System.Reflection.Assembly.GetEntryAssembly().GetCustomAttribute<System.Reflection.AssemblyInformationalVersionAttribute>().InformationalVersion.ToString()

据我所知,该值不能通过项目的选项UI设置。

老实说,我很困惑为什么有一个UI不能使用API​​来访问单独的版本号(在我的问题中引用的版本)。

答案 1 :(得分:0)

请参阅:https://github.com/dotnet/core/issues/2700#issuecomment-491025782

Directory.Build.props文件添加到解决方案文件夹中,然后在其中而不是通过UI来管理版本。

<Project>
  <PropertyGroup>
    <VersionPrefix>1.19.2</VersionPrefix>
  </PropertyGroup>
</Project>

我倾向于认为VS工具应该对此更好,但是只要我只有一个地方来管理此值,这就是对替代方法的一项重大改进。