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 do vygenerovaného souboru libovolné atributy sestavení.

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

Vlastnost GenerateAssemblyInfo MSBuild řídí AssemblyInfo generování atributů projektu. Pokud je hodnota (což je true výchozí), GenerateAssemblyInfo 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 výchozí hodnota $(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ý se ve výchozím nastavení Debugsdílí 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 NÁSTROJE MSBuild, které sadě SDK říkají, jaký typ atributu se má vytvořit. Tyto položky by také měly obsahovat všechny parametry konstruktoru, které jsou požadovány pro daný atribut. Atribut má například System.Reflection.AssemblyMetadataAttribute konstruktor, který přebírá 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 hlásí sadě .NET SDK, aby jako atribut na úrovni sestavení vygeneruje následující jazyk C# (nebo ekvivalentní jazyk F#nebo Visual Basic):

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

(Skutečný řetězec data by byl jakýkoliv, co 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 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 se obvykle nachází 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í:

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