Ustawianie atrybutów zestawu w pliku projektu

Możesz użyć właściwości MSBuild, aby przekształcić właściwości projektu związane z pakietem w atrybuty zestawu w wygenerowanym pliku kodu. Ponadto możesz użyć elementów MSBuild, aby dodać dowolne atrybuty zestawu do wygenerowanego pliku.

Używanie właściwości pakietu jako atrybutów zestawu

Właściwość GenerateAssemblyInfo MSBuild steruje AssemblyInfo generowaniem atrybutów dla projektu. GenerateAssemblyInfo Gdy wartość to true (czyli wartość domyślna), właściwości projektu związane z pakietem są przekształcane w atrybuty zestawu. W poniższej tabeli wymieniono właściwości projektu, które generują atrybuty. Zawiera również listę właściwości, których można użyć do wyłączenia tej generacji dla poszczególnych atrybutów, na przykład:

<PropertyGroup>
  <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
Właściwość MSBuild Atrybut zestawu Właściwość wyłączania generowania atrybutów
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

Uwagi dotyczące tych ustawień:

  • AssemblyVersion i FileVersion domyślnie wartość $(Version) bez sufiksu. Jeśli na przykład $(Version) wartość to 1.2.3-beta.4, wartość to 1.2.3.
  • InformationalVersionwartość domyślna to .$(Version)
  • $(SourceRevisionId) Jeśli właściwość jest obecna, jest dołączana do InformationalVersionelementu . To zachowanie można wyłączyć przy użyciu polecenia IncludeSourceRevisionInInformationalVersion.
  • Copyright właściwości i Description są również używane dla metadanych NuGet.
  • Configuration, który domyślnie ma wartość , jest współużytkowany ze wszystkimi obiektami docelowymi Debugprogramu MSBuild. Można go ustawić za pomocą --configuration opcji dotnet poleceń, na przykład dotnet pack.
  • Niektóre właściwości są używane podczas tworzenia pakietu NuGet. Aby uzyskać więcej informacji, zobacz Właściwości pakietu.

Ustawianie dowolnych atrybutów

Istnieje również możliwość dodania własnych atrybutów zestawu do wygenerowanego pliku. W tym celu zdefiniuj <AssemblyAttribute> elementy MSBuild, które informują zestaw SDK o typie atrybutu do utworzenia. Te elementy powinny również zawierać wszystkie parametry konstruktora, które są wymagane dla tego atrybutu. Na przykład atrybut ma konstruktor, System.Reflection.AssemblyMetadataAttribute który przyjmuje dwa ciągi:

  • Nazwa opisując dowolną wartość.
  • Wartość do przechowywania.

Jeśli właściwość Date w programie MSBuild zawierała datę utworzenia zestawu, możesz użyć AssemblyMetadataAttribute polecenia , aby osadzić datę w atrybutach zestawu przy użyciu następującego kodu 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>

Ten element nakazuje zestawowi .NET SDK emitowanie następującego języka C# (lub równoważnego języka F# lub Visual Basic) jako atrybutu na poziomie zestawu:

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

(Rzeczywisty ciąg daty będzie niezależnie od tego, co podano w czasie kompilacji).

Migracja z platformy .NET Framework

W przypadku migracji projektu programu .NET Framework do platformy .NET 6 lub nowszego może wystąpić błąd związany z zduplikowanymi plikami informacji o zestawie. Dzieje się tak, ponieważ szablony projektów programu .NET Framework tworzą plik kodu z zestawem atrybutów informacji o zestawie. Plik znajduje się zazwyczaj w folderze .\Properties\AssemblyInfo.cs lub .\Properties\AssemblyInfo.vb. Jednak projekty w stylu zestawu SDK również generują ten plik na podstawie ustawień projektu.

Podczas przenoszenia kodu do platformy .NET 6 lub nowszej wykonaj jedną z następujących czynności:

  • Wyłącz generowanie pliku kodu tymczasowego zawierającego atrybuty informacji o zestawie, ustawiając wartość GenerateAssemblyInfo na false w pliku projektu. Dzięki temu można zachować plik AssemblyInfo .
  • Przeprowadź migrację ustawień w pliku AssemblyInfo do pliku projektu, a następnie usuń plik AssemblyInfo.