MSBuild プロパティを使用すると、 パッケージ関連のプロジェクト プロパティ を、生成されたコード ファイル内のアセンブリ属性に変換できます。 さらに、MSBuild 項目を使用して、生成されたファイルに 任意のアセンブリ属性 を追加できます。
パッケージ プロパティをアセンブリ属性として使用する
MSBuild プロパティは、プロジェクト属性の生成を制御します。 値が (既定値) の場合、パッケージ関連のプロジェクト プロパティはアセンブリ属性に変換されます。 次の表に、属性を生成するプロジェクト のプロパティを示します。 また、属性ごとにその生成を無効にするために使用できるプロパティも一覧表示されます。次に例を示します。
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
| MSBuild のプロパティ | Assembly 属性 | 属性の生成を無効にするプロパティ |
|---|---|---|
Company |
AssemblyCompanyAttribute | GenerateAssemblyCompanyAttribute |
Configuration |
AssemblyConfigurationAttribute | GenerateAssemblyConfigurationAttribute |
Copyright |
AssemblyCopyrightAttribute | GenerateAssemblyCopyrightAttribute |
Description |
AssemblyDescriptionAttribute | GenerateAssemblyDescriptionAttribute |
FileVersion |
AssemblyFileVersionAttribute | GenerateAssemblyFileVersionAttribute |
InformationalVersion |
AssemblyInformationalVersionAttribute | GenerateAssemblyInformationalVersionAttribute |
Product |
AssemblyProductAttribute | GenerateAssemblyProductAttribute |
AssemblyTitle |
AssemblyTitleAttribute | GenerateAssemblyTitleAttribute |
AssemblyVersion |
AssemblyVersionAttribute | GenerateAssemblyVersionAttribute |
NeutralLanguage |
NeutralResourcesLanguageAttribute | GenerateNeutralResourcesLanguageAttribute |
SourceRevisionId |
AssemblyInformationalVersionAttribute | N/A |
これらの設定に関する注意事項:
- と は、サフィックスがない の値を既定値とします。 たとえば、 が の場合、値は されます。
- は既定で の値になります。
- .NET 8 SDK 以降でビルドする場合、
SourceRevisionIdは常にInformationalVersionに追加されます。 .NET 8 SDK には Source Link が含まれており、git リポジトリ ビルドのコミット ハッシュにSourceRevisionIdが自動的に設定されます。 リポジトリ以外のビルドの場合、 は空です。 この動作を無効にするには、 を に設定します。 - プロパティと プロパティは、NuGet メタデータにも使用されます。
- は既定で に設定され、すべての MSBuild ターゲットと共有されます。 これは、 コマンドの オプション (dotnet pack など) を使用して設定できます。
- 一部のプロパティは、NuGet パッケージの作成時に使用されます。 詳細については、「 パッケージのプロパティ」を参照してください。
任意の属性を設定する
生成されたファイルに独自のアセンブリ属性を追加することもできます。 これを行うには、作成する属性 種類を SDK に指示する MSBuild 項目を定義します。 これらの項目には、その属性に必要なコンストラクター パラメーターも含める必要があります。 たとえば、 属性には、次の 2 つの文字列を受け取るコンストラクターがあります。
- 任意の値を記述する名前。
- 格納する値。
アセンブリが作成された日付を含む プロパティが MSBuild にある場合は、次の MSBuild コードを使用して、 を使用してその日付をアセンブリ属性に埋め込むことができます。
<ItemGroup>
<!-- Include must be the fully qualified .NET type name of the Attribute to create. -->
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
<!-- _Parameter1, _Parameter2, etc. correspond to the
matching parameter of a constructor of that .NET attribute type -->
<_Parameter1>BuildDate</_Parameter1>
<_Parameter2>$(Date)</_Parameter2>
</AssemblyAttribute>
</ItemGroup>
この項目は、次の C# (または同等の F# または Visual Basic) をアセンブリ レベルの属性として出力するように .NET SDK に指示します。
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
(実際の日付文字列は、ビルド時に指定したものになります)。
属性に 以外のパラメーター型がある場合は、MSBuild タスクでサポートされている XML 要素の特定のパターンを使用してパラメーターを指定できます。 「WriteCodeFragment タスク - アセンブリ レベルの属性を生成する」を参照してください。
.NET Framework からの移行
.NET Framework プロジェクトを .NET 6 以降に移行すると、アセンブリ情報ファイルの重複に関連するエラーが発生する可能性があります。 これは、.NET Framework プロジェクト テンプレートによって、アセンブリ情報属性が設定されたコード ファイルが作成されるためです。 通常、ファイルは .\Properties\AssemblyInfo.cs または .\Properties\AssemblyInfo.vb にあります。 ただし、SDK スタイルのプロジェクトでは、プロジェクト設定に基づいてこのファイルも 生成 されます。
コードを .NET 6 以降に移植する場合は、次のいずれかの操作を行います。
- をプロジェクト ファイルにに設定して、アセンブリ情報属性を含む一時コード ファイルの生成を無効にします。 これにより、 AssemblyInfo ファイルを保持できます。
- AssemblyInfo ファイルの設定をプロジェクト ファイルに移行し、AssemblyInfo ファイルを削除します。
.NET