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

git*_*est 4 .net c# .net-assembly winui-3

我有一个 winui 3 应用程序,我使用此代码来获取应用程序版本信息:

assembly = Assembly.GetEntryAssembly();
assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion
Run Code Online (Sandbox Code Playgroud)

之前,我有 Windows 11 - 22H2 和 Visual Studio 2022 v17.7 + net7.0 并且上述代码的输出如下:

4.0.0
Run Code Online (Sandbox Code Playgroud)

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

4.0.0 + ea32asd354ad5a4d5a4sda5a54da54da4das54da4d
Run Code Online (Sandbox Code Playgroud)

我将 .net 版本更改为 net7.0 或者移至以前的版本(来自 git)并且输出很奇怪。但是当我从 MS 商店运行我的应用程序时,输出是正确的,或者当我创建新项目时,输出是正确的,但我不知道为什么我的项目被选中

Lui*_*sta 5

这不是一个错误,而是一个重大变化。正如开发人员社区中所讨论的,.NET SDK 中已包含新行为:.NET SDK 中包含源链接

要获得以前的行为并避免在 AssemblyInformationalVersion 中显示提交 ID,请在 .csproj 文件中包含以下设置:

<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
Run Code Online (Sandbox Code Playgroud)

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

<Project>
  <PropertyGroup>
      <IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)