在ASP.NET Core 1.0.0 Web应用程序中显示项目版本

时间:2016-09-22 23:02:48

标签: version .net-assembly .net-core

以前在RC.x中工作的任何东西都不再有用。

我试过这些:

  1. PlatformServices.Default.Application.ApplicationVersion;

  2. 的typeof(控制器).GetTypeInfo()Assembly.GetCustomAttribute< AssemblyFileVersionAttribute>()版本;

  3. Assembly.GetEntryAssembly()的GetName()Version.ToString();
  4. 它们都返回1.0.0.0而不是1.0.0-9应该是在sudo xcodebuild -license

    执行dotnet publish --version-suffix 9后执行的

    基本上他们从附图中给我“文件版本”而不是project.json: "version": "1.0.0-*"实际上似乎改变的“产品版本”。

    enter image description here

4 个答案:

答案 0 :(得分:27)

对于版本1.x:

Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;

对于版本2.0.0,此属性包含丑陋的内容: 2.0.0 built by: dlab-DDVSOWINAGE041所以请使用这个:

typeof(RuntimeEnvironment).GetTypeInfo().Assembly.GetCustomAttribute<AssemblyFileVersionAttribute>().Version;

答案 1 :(得分:15)

我会在ASP.NET Core 2.0 +

上这样做
var assemblyVersion = typeof(Startup).Assembly.GetName().Version.ToString();

答案 2 :(得分:5)

这对我也有用:

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

适用于csproj文件 - &lt; Version&gt; 1.2.3.4或&lt; VersionPrefix&gt; 1.2.3&lt; / VersionPrefix&gt;。但是&lt; VersionSuffix&gt;没有像this doc所说的那样被认可。

答案 3 :(得分:1)

在.Net Core 3.1中,我使用以下命令直接在视图中显示版本:

         @GetType().Assembly.GetName().Version.ToString()

这显示了csproj文件中的程序集版本:

<PropertyGroup>
  <TargetFramework>netcoreapp3.1</TargetFramework>
  <AssemblyVersion>4.0.0.0</AssemblyVersion>
  <FileVersion>2.2.2.2</FileVersion>
  <Version>4.0.0-NetCoreRC</Version>
</PropertyGroup>

如果要在View中使用System.Reflection显示“其他” FileVersion或“信息”版本属性:

using System.Reflection;
.... bunch of html and stuff
<footer class="main-footer">
        <div class="float-right hidden-xs">
            <b>Assembly Version</b> @(Assembly.GetEntryAssembly().GetName().Version)
            <b>File Version</b> @(Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyFileVersionAttribute>().Version)
            <b>Info Version</b> @(Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion)
        </div>    
    </footer>

请注意,在添加System.Reflection之后,原始@GetType()。Assembly.GetName()。Version.ToString()行返回0.0.0.0,您需要使用@ Assembly.GetEntryAssembly()。GetName() 。版本

有一篇博客文章here

编辑:确保对Version字符串遵循正确的命名约定。通常,他们需要以数字开头。如果不这样做,则将构建您的应用程序,但是当您尝试使用NuGet添加或还原软件包时,会出现类似“ anythingGoesVersion”的错误,该字符串不是有效的版本字符串。或更神秘的错误:缺少必需的属性“名称”。输入文件:C:\ Users .... csproj。 更多here