Share via


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 och FileVersion standardvärdet $(Version) för utan suffixet. Om till exempel $(Version) är 1.2.3-beta.4blir 1.2.3värdet .
  • InformationalVersion standardvärdet för $(Version).
  • Om egenskapen finns läggs den $(SourceRevisionId) till InformationalVersioni . Du kan inaktivera det här beteendet med hjälp av IncludeSourceRevisionInInformationalVersion.
  • Copyright och Description egenskaper används också för NuGet-metadata.
  • Configuration, som som standard är Debug, 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.)

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 i false 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 .