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
iFileVersion
domyślnie wartość$(Version)
bez sufiksu. Jeśli na przykład$(Version)
wartość to1.2.3-beta.4
, wartość to1.2.3
.InformationalVersion
wartość domyślna to .$(Version)
$(SourceRevisionId)
Jeśli właściwość jest obecna, jest dołączana doInformationalVersion
elementu . To zachowanie można wyłączyć przy użyciu poleceniaIncludeSourceRevisionInInformationalVersion
.Copyright
właściwości iDescription
są również używane dla metadanych NuGet.Configuration
, który domyślnie ma wartość , jest współużytkowany ze wszystkimi obiektami docelowymiDebug
programu MSBuild. Można go ustawić za pomocą--configuration
opcjidotnet
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).
Jeśli atrybut ma typy parametrów innych niż System.String
, można określić parametry przy użyciu określonego wzorca elementów XML obsługiwanych przez zadanie MSBuild WriteCodeFragment
. Zobacz WriteCodeFragment task — Generate assembly-level attributes (Zadanie WriteCodeFragment — generowanie atrybutów na poziomie zestawu).
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
nafalse
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.