Sdílet prostřednictvím


Nastavení atributů sestavení v souboru projektu

Vlastnost MSBuild můžete použít k transformaci vlastností projektu souvisejícího s balíčkem na atributy sestavení v vygenerovaném souboru kódu. Dále můžete pomocí položek nástroje MSBuild přidat k vygenerovanému souboru libovolné atributy sestavení.

Použití vlastností balíčku jako atributů sestavení

Vlastnost GenerateAssemblyInfo MSBuild řídí AssemblyInfo generování atributů projektu. Pokud je hodnota GenerateAssemblyInfo (což je výchozí true), vlastnosti projektu související s balíčkem se transformují na atributy sestavení. Následující tabulka uvádí vlastnosti projektu, které generují atributy. Obsahuje také vlastnosti, které můžete použít k zakázání generování na základě atributu, například:

<PropertyGroup>
  <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
Vlastnost MSBuild Atribut sestavení Vlastnost pro zakázání generování atributů
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

Poznámky k těmto nastavením:

  • AssemblyVersion a FileVersion se nastavují na hodnotu $(Version) bez přípony. Pokud $(Version) je 1.2.3-beta.4například , pak by hodnota byla 1.2.3.
  • InformationalVersion výchozí hodnota je hodnota $(Version).
  • $(SourceRevisionId) Pokud je vlastnost přítomna, je připojena k InformationalVersion. Toto chování můžete zakázat pomocí .IncludeSourceRevisionInInformationalVersion
  • Copyright a Description vlastnosti se také používají pro metadata NuGet.
  • Configuration, který má ve výchozím nastavení hodnotu Debug, je sdílen se všemi cíli nástroje MSBuild. Můžete ho nastavit pomocí --configuration možnosti dotnet příkazů, například dotnet pack.
  • Některé vlastnosti se používají při vytváření balíčku NuGet. Další informace naleznete v tématu Vlastnosti balíčku.

Nastavení libovolných atributů

Do vygenerovaného souboru je také možné přidat vlastní atributy sestavení. Chcete-li to provést, definujte <AssemblyAttribute> položky MSBuild, které určují, jaký typ atributu má SDK vytvořit. Tyto položky by také měly obsahovat všechny parametry konstruktoru, které jsou požadovány pro daný atribut. Například má atribut System.Reflection.AssemblyMetadataAttribute konstruktor, který bere dva řetězce:

  • Název, který popisuje libovolnou hodnotu.
  • Hodnota, která se má uložit.

Pokud jste měli Date vlastnost v nástroji MSBuild, která obsahovala datum vytvoření sestavení, můžete použít AssemblyMetadataAttribute k vložení tohoto data do atributů sestavení pomocí následujícího kódu 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>

Tato položka instruuje sadu .NET SDK, aby emitovala následující C# (nebo ekvivalentní F# nebo Visual Basic) jako atribut na úrovni sestavení.

[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]

(Skutečný datumový řetězec by byl ten, který jste zadali v době sestavení.)

Pokud má atribut jiné typy parametrů než System.String, můžete zadat parametry pomocí konkrétního vzoru elementů XML podporovaných úlohou MSBuild WriteCodeFragment . Viz úloha WriteCodeFragment – generování atributů na úrovni sestavení.

Migrace z rozhraní .NET Framework

Pokud migrujete projekt rozhraní .NET Framework na .NET 6 nebo novější, může dojít k chybě související s duplicitními soubory informací o sestavení. Je to proto, že šablony projektů rozhraní .NET Framework vytvářejí soubor kódu s nastavenými atributy informací o sestavení. Soubor je obvykle umístěn v umístění .\Properties\AssemblyInfo.cs nebo .\Properties\AssemblyInfo.vb. Projekty ve stylu sady SDK však také generují tento soubor za vás na základě nastavení projektu.

Při přenosu kódu do .NET 6 nebo novějšího proveďte jednu z následujících věcí:

  • Zakázáním generování dočasného souboru kódu, který zahrnuje atributy informací o sestavení, a nastavením GenerateAssemblyInfo na false ve vašem souboru projektu. To vám umožní zachovat soubor AssemblyInfo .
  • Migrujte nastavení v souboru AssemblyInfo do souboru projektu a odstraňte soubor AssemblyInfo .