Assemblykenmerken instellen in een projectbestand
U kunt een MSBuild-eigenschap gebruiken om pakketgerelateerde projecteigenschappen te transformeren naar assemblykenmerken in een gegenereerd codebestand. Verder kunt u MSBuild-items gebruiken om willekeurige assemblykenmerken toe te voegen aan het gegenereerde bestand.
Pakketeigenschappen gebruiken als assemblykenmerken
De GenerateAssemblyInfo
eigenschap MSBuild bepaalt AssemblyInfo
het genereren van kenmerken voor een project. Wanneer de waarde (de standaardinstelling GenerateAssemblyInfo
) is true
, worden pakketgerelateerde projecteigenschappen omgezet in assemblykenmerken. De volgende tabel bevat de projecteigenschappen waarmee de kenmerken worden gegenereerd. Er worden ook de eigenschappen weergegeven die u kunt gebruiken om deze generatie per kenmerk uit te schakelen, bijvoorbeeld:
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
MSBuild-eigenschap | Assembly-kenmerk | Eigenschap voor het uitschakelen van kenmerkgeneratie |
---|---|---|
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 |
Opmerkingen over deze instellingen:
AssemblyVersion
enFileVersion
de standaardwaarde van$(Version)
zonder achtervoegsel. Als dat het zo is1.2.3-beta.4
,$(Version)
is1.2.3
de waarde bijvoorbeeld .InformationalVersion
is standaard ingesteld op de waarde van$(Version)
.- Als de
$(SourceRevisionId)
eigenschap aanwezig is, wordt deze toegevoegd aanInformationalVersion
. U kunt dit gedrag uitschakelen met behulp vanIncludeSourceRevisionInInformationalVersion
. Copyright
enDescription
eigenschappen worden ook gebruikt voor NuGet-metagegevens.Configuration
, dat standaardDebug
wordt gebruikt , wordt gedeeld met alle MSBuild-doelen. U kunt deze instellen via de--configuration
optie vandotnet
opdrachten, bijvoorbeeld dotnet pack.- Sommige eigenschappen worden gebruikt bij het maken van een NuGet-pakket. Zie Pakketeigenschappen voor meer informatie.
Willekeurige kenmerken instellen
Het is ook mogelijk om uw eigen assemblykenmerken toe te voegen aan het gegenereerde bestand. Hiervoor definieert u <AssemblyAttribute>
MSBuild-items die de SDK vertellen welk type kenmerk moet worden gemaakt. Deze items moeten ook eventuele constructorparameters bevatten die vereist zijn voor dat kenmerk. Het kenmerk heeft bijvoorbeeld System.Reflection.AssemblyMetadataAttribute een constructor die twee tekenreeksen gebruikt:
- Een naam om een willekeurige waarde te beschrijven.
- De waarde die moet worden opgeslagen.
Als u een Date
eigenschap in MSBuild had die de datum bevatte waarop een assembly werd gemaakt, kunt u die datum insluiten AssemblyMetadataAttribute
in de assemblykenmerken met behulp van de volgende MSBuild-code:
<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>
Dit item geeft aan dat de .NET SDK de volgende C# (of equivalente F# of Visual Basic) als een kenmerk op assemblyniveau verzendt:
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
(De werkelijke datumtekenreeks is wat u hebt opgegeven op het moment van de build.)
Als het kenmerk andere parametertypen heeft dan System.String
, kunt u de parameters opgeven met behulp van een bepaald patroon van XML-elementen die worden ondersteund door de MSBuild-taak WriteCodeFragment
. Zie de taak WriteCodeFragment - Kenmerken op assemblyniveau genereren.
Migreren van .NET Framework
Als u uw .NET Framework-project migreert naar .NET 6 of hoger, kan er een fout optreden met betrekking tot dubbele assemblygegevensbestanden. Dat komt doordat .NET Framework-projectsjablonen een codebestand maken met set assembly-infokenmerken. Het bestand bevindt zich meestal op .\Properties\AssemblyInfo.cs of .\Properties\AssemblyInfo.vb. Met SDK-projecten wordt dit bestand echter ook voor u gegenereerd op basis van de projectinstellingen.
Voer een van de volgende handelingen uit bij het overzetten van uw code naar .NET 6 of hoger:
- Schakel het genereren van het tijdelijke codebestand met de kenmerken van de assembly-info uit door deze in te stellen
GenerateAssemblyInfo
false
in het projectbestand. Hierdoor kunt u het AssemblyInfo-bestand behouden. - Migreer de instellingen in het AssemblyInfo-bestand naar het projectbestand en verwijder het AssemblyInfo-bestand .