Ange sammansättningsattribut i en projektfil
Du kan använda en MSBuild-egenskap för att omvandla paketrelaterade projektegenskaper till sammansättningsattribut i en genererad kodfil. Dessutom kan du använda MSBuild-objekt för att lägga till godtyckliga sammansättningsattribut i den genererade filen.
Använda paketegenskaper som sammansättningsattribut
Egenskapen GenerateAssemblyInfo
MSBuild styr AssemblyInfo
attributgenereringen för ett projekt. När värdet GenerateAssemblyInfo
är true
(vilket är standard) omvandlas paketrelaterade projektegenskaper till sammansättningsattribut. I följande tabell visas de projektegenskaper som genererar attributen. Den visar även de egenskaper som du kan använda för att inaktivera den generationen per attribut, till exempel:
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
MSBuild-egenskap | Sammansättningsattribut | Egenskap för att inaktivera attributgenerering |
---|---|---|
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 |
Information om de här inställningarna:
AssemblyVersion
ochFileVersion
standardvärdet$(Version)
för utan suffixet. Om till exempel$(Version)
är1.2.3-beta.4
blir1.2.3
värdet .InformationalVersion
standardvärdet för$(Version)
.- Om egenskapen finns läggs den
$(SourceRevisionId)
tillInformationalVersion
i . Du kan inaktivera det här beteendet med hjälp avIncludeSourceRevisionInInformationalVersion
. Copyright
ochDescription
egenskaper används också för NuGet-metadata.Configuration
, som som standard ärDebug
, delas med alla MSBuild-mål. Du kan ange det via--configuration
alternativet kommandon, till exempel dotnet packdotnet
.- Vissa av egenskaperna används när du skapar ett NuGet-paket. Mer information finns i Paketegenskaper.
Ange godtyckliga attribut
Du kan också lägga till egna sammansättningsattribut i den genererade filen. Det gör du genom att definiera <AssemblyAttribute>
MSBuild-objekt som talar om för SDK vilken typ av attribut som ska skapas. Dessa objekt bör också innehålla eventuella konstruktorparametrar som krävs för det attributet. Attributet har till exempel System.Reflection.AssemblyMetadataAttribute en konstruktor som tar två strängar:
- Ett namn som beskriver ett godtyckligt värde.
- Värdet som ska lagras.
Om du hade en Date
egenskap i MSBuild som innehöll datumet då en sammansättning skapades kan du använda AssemblyMetadataAttribute
för att bädda in det datumet i sammansättningsattributen med hjälp av följande MSBuild-kod:
<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>
Det här objektet instruerar .NET SDK att avge följande C# (eller motsvarande F# eller Visual Basic) som ett attribut på sammansättningsnivå:
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
(Den faktiska datumsträngen skulle vara det du angav vid tidpunkten för bygget.)
Om attributet har andra parametertyper än System.String
kan du ange parametrarna med hjälp av ett visst mönster med XML-element som stöds av MSBuild-aktiviteten WriteCodeFragment
. Se WriteCodeFragment-uppgift – Generera attribut på sammansättningsnivå.
Migrera från .NET Framework
Om du migrerar .NET Framework-projektet till .NET 6 eller senare kan det uppstå ett fel som rör dubbletter av sammansättningsinformationsfiler. Det beror på att .NET Framework-projektmallar skapar en kodfil med sammansättningsinformationsattribut inställda. Filen finns vanligtvis på .\Properties\AssemblyInfo.cs eller .\Properties\AssemblyInfo.vb. Men SDK-liknande projekt genererar även den här filen åt dig baserat på projektinställningarna.
När du porterar koden till .NET 6 eller senare gör du något av följande:
- Inaktivera genereringen av den tillfälliga kodfilen som innehåller attributen för sammansättningsinformation genom att ange
GenerateAssemblyInfo
ifalse
projektfilen. På så sätt kan du behålla din AssemblyInfo-fil . - Migrera inställningarna i AssemblyInfo-filen till projektfilen och ta sedan bort AssemblyInfo-filen .