程序集属性表中版本后出现不需要的字符

问题描述 投票:0回答:1

某些东西(可能是 MSBuild)正在将一长串数字和字符附加到我的程序集属性表中的产品版本中:

2024.6.22.6+9f3a8da557d9ed6941ee2dd3751916eb3ff1cece

应该是这样的:

2024.6.22.6

enter image description here

这是我的项目文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>

    ...

    (other stuff)

    ...

    <FileVersion>2024.6.22.6</FileVersion>
    <Version>2024.6.22.6</Version>
  </PropertyGroup>
</Project>

官方文档似乎没有解决这个问题。我尝试了

<VersionSuffix />
元素,以及
<InformationalVersion />
<AssemblyVersion />
<ProductVersion />
,但这些都没有效果。

我该如何解决这个问题并删除多余的字符?

--编辑--

问题源于自动生成的

AssemblyInfo.vb
文件:

Assembly: System.Reflection.AssemblyInformationalVersionAttribute("2024.6.22.6+8ae973ace79d1088bac4753cdea9c07b78f68709")

MSBuild 采用此处设置的值来代替项目文件中指定的值。

我已经能够通过使用我的构建脚本插入一个删除有问题的代码行的自定义目标来缓解此问题:

<Target Name="RemoveAssemblyInfoMetadata" BeforeTargets="CoreCompile">
  <PropertyGroup>
    <AssemblyInfoFilePattern>.*AssemblyInfo\.vb</AssemblyInfoFilePattern>
  </PropertyGroup>
  <Exec Command="powershell -Command &quot;
    $Files = Get-ChildItem -Path $(IntermediateOutputPath) -Filter '*.vb' -File -Recurse | Where-Object { $_.Name -match $env:AssemblyInfoFilePattern };
    foreach ($File in $Files) {
      $Content = Get-Content $File.FullName;
      $FilteredContent = $Content | Where-Object { $_ -notmatch 'AssemblyInformationalVersionAttribute' };
      $FilteredContent | Set-Content $File.FullName;
    }
  &quot;" />
</Target>

(注意:这假设项目文件中包含

<InformationalVersion />
元素。)

enter image description here

它确实有效,但看起来确实像是一个拼凑的东西。可能是因为它是。

如果有人知道一种更优雅的方法来指示 MSBuild 覆盖自动生成的

AssemblyInfo.vb
文件中设置的值,我洗耳恭听。

msbuild metadata .net-assembly
1个回答
0
投票

您需要通过在 vbproj/csproj 文件中设置以下属性来禁用将源代码控制信息(git commit id)添加到信息版本:

<PropertyGroup>
  <IncludeSourceRevisionInInformationalVersion>False</IncludeSourceRevisionInInformationalVersion>
</PropertyGroup>
© www.soinside.com 2019 - 2024. All rights reserved.