获取应用程序版本信息时出现奇怪的信息

3
我有一个WinUI 3应用程序,我正在使用以下代码获取应用程序版本信息:
assembly = Assembly.GetEntryAssembly();
assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion

之前,我使用的是Windows 11 - 22H2和Visual Studio 2022 v17.7 + net7.0。上述代码的输出如下所示:
4.0.0

今天我将Windows(全新安装)更改为23H2和Visual Studio 2022 v17.8 / Visual Studio 2022 v18.0-Preview1 + net8.0,但是当我运行我的应用程序(从Visual Studio)时,上述代码的输出几乎如下所示:
4.0.0 + ea32asd354ad5a4d5a4sda5a54da54da4das54da4d

我将.NET版本更改为net7.0或者我从Git上回退到之前的版本,但输出结果很奇怪。 但是当我从Microsoft Store运行我的应用时,输出结果是正确的,或者当我创建一个新项目时,输出结果也是正确的,但我不知道为什么我的项目出现了损坏。

看起来dotnet build--versionSuffix参数被使用了:https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-build#:~:text=no%20longer%20occur.-,%2D%2Dversion%2Dsuffix%20%3CVERSION_SUFFIX%3E,-Sets%20the%20value - undefined
@Serg 那么...怎么修复呢? - undefined
抱歉,我不知道确切的修复方法。你应该找到在你的特定环境中添加此选项的位置,并将其删除。 - undefined
1个回答

5
这不是一个错误,而是一个重大变更。 如在开发者社区中讨论的那样,.NET SDK中已经包含了一个新的行为:.NET SDK中包含的源链接
为了获得以前的行为并避免在AssemblyInformationalVersion中显示提交ID,请在您的.csproj文件中添加以下设置:
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>

如果解决方案中有多个项目,我建议将设置添加到 "Directory.Build.props" 文件中,而不是在每个项目文件中添加设置。"Directory.Build.props" 文件必须位于包含源代码的根文件夹中,并且必须类似于以下内容:
<Project>
  <PropertyGroup>
      <IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
  </PropertyGroup>
</Project>

优秀的,已修复 - undefined
我有一个问题,我有一个VSIX模板应用程序,所以我为Net 8.0添加了这个选项,那么我需要为Net 7.0和6.0添加吗?如果我理解正确的话,这个行为是在新的VS版本中添加的!你能解释一下吗? - undefined
你必须在每个项目的(.csproj)文件中添加设置,而不是在目标框架中添加。如果你有多个项目,可以使用"Directory.Build.props"的方法。我编辑了我的回答,包括了这个方法。 如果这个回答没有解决你的问题,请提供一个例子。 - undefined
我知道。我的意思是,这个功能是在新的Visual Studio中默认添加和启用的,而不是在net8.0中,对吧?因为我测试了net8.0和net7.0,我应该为两者都添加属性,所以无论我们使用net8.0还是net7.0,我们都应该添加IncludeSourceRevisionInInformationalVersion,如果我们正在使用新的VS。 - undefined
根据https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/8.0/source-link#new-behavior中所述,新的行为已经添加到了.Net 8(而不是Visual Studio 17.8),并且应该只影响到.Net 8,但实际上它影响到了所有目标(net8.0,net7.0,net48...)。 我已经要求Visual Studio团队将其重新考虑为一个错误: https://developercommunity.visualstudio.com/t/Build-adds-string-to-assembly-Informatio/10515014#T-N10516964-N10524297 总之,我不知道原因,但如果你正在使用Visual Studio 17.8+,你必须为所有的目标添加IncludeSourceRevisionInInformationalVersion。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接