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
aFileVersion
výchozí hodnota$(Version)
bez přípony. Pokud$(Version)
je1.2.3-beta.4
například , pak by hodnota byla1.2.3
.InformationalVersion
výchozí hodnota je hodnota$(Version)
.$(SourceRevisionId)
Pokud je vlastnost přítomna, je připojena kInformationalVersion
. Toto chování můžete zakázat pomocí .IncludeSourceRevisionInInformationalVersion
Copyright
aDescription
vlastnosti se také používají pro metadata NuGet.Configuration
, který se ve výchozím nastaveníDebug
sdílí se všemi cíli nástroje MSBuild. Můžete ho nastavit pomocí--configuration
možnostidotnet
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
nafalse
soubor projektu. To vám umožní zachovat soubor AssemblyInfo . - Migrujte nastavení v souboru AssemblyInfo do souboru projektu a odstraňte soubor AssemblyInfo .