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 商店运行我的应用程序时,输出是正确的,或者当我创建新项目时,输出是正确的,但我不知道为什么我的项目被选中
这不是一个错误,而是一个重大变化。正如开发人员社区中所讨论的,.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)