[C#] .NET 8 SDK でアセンブリの製品バージョンに Git ハッシュを自動付与されないようにする
.NET SDK 8 Preview 4 以降、AssemblyInformationalVersion の末尾に Git SHA が自動付与されるようになりました。
これは SDK の仕様なので、.NET Framework を対象とするプロジェクトにも影響します。この自動付与を無効に設定する方法を説明します。
環境
- .NET 8.0.100
- C# 12.0
- Visual Studio 2022 Version Version 17.8.3
- Windows 11 Pro 22H2 22621.2861
結果
.csproj
もしくは Directory.Build.props
に以下の設定を追加します。
<Project>
<PropertyGroup>
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
</PropertyGroup>
</Project>
説明
ここに .NET 8 SDK の破壊的変更が記載されています。
https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/8.0/source-link
ビルドプロセスまたはコードで
InformationalVersion
のソースリビジョン情報を期待していない場合は、プロジェクトファイルでIncludeSourceRevisionInInformationalVersion
プロパティをfalse
に設定することで、新しい動作を無効にできます。
IncludeSourceRevisionInInformationalVersion
の説明はここにあります。
MSBuild properties for Microsoft.NET.Sdk - .NET | Microsoft Learn
$(SourceRevisionId)
プロパティが存在する場合は、InformationalVersion
に追加されます。この動作を無効にするには、IncludeSourceRevisionInInformationalVersion
を使用します。
動作確認
実際に動作確認してみます。
.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<VersionPrefix>2.0.0</VersionPrefix>
<VersionSuffix>beta.1</VersionSuffix>
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
</PropertyGroup>
</Project>
Program.cs
using System.Reflection;
var assembly = Assembly.GetExecutingAssembly();
var informationalVersion = assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
Console.WriteLine(informationalVersion);
AssemblyInformationalVersion を取得するコードの説明は、こちらを参考にしてください。
[C#] AssemblyInfo アセンブリ情報やバージョンを取得する (.NET Core比較版)
git リポジトリがなければ、ハッシュは付与されません。
git リポジトリを作成してコミットします。その後にリビルドすると、ハッシュが付与されました。
ここで IncludeSourceRevisionInInformationalVersion
を false
に設定してリビルドすると、2.0.0-beta.1
に戻ります。
感謝
- .NET 8 SDK Preview 4 から AssemblyInformationalVersion 属性に何かハッシュが付くようになった : @jsakamoto
- Breaking change: Source Link included in the .NET SDK - .NET | Microsoft Learn
- MSBuild properties for Microsoft.NET.Sdk - .NET | Microsoft Learn
- Git commit ID included in assembly ProductVersion field when building with sdk 8 · Issue #34568 · dotnet/sdk
- c# - FileVersionInfo.ProductVersion suddenly contains git commit hash - Stack Overflow
関連記事
新着記事