Szerelvényattribútumok beállítása projektfájlban

Az MSBuild tulajdonsággal a csomaghoz kapcsolódó projekttulajdonságokat szerelvényattribútumokká alakíthatja egy létrehozott kódfájlban. Emellett az MSBuild elemekkel tetszőleges szerelvényattribútumokat adhat hozzá a létrehozott fájlhoz.

Csomagtulajdonságok használata szerelvényattribútumként

Az GenerateAssemblyInfo MSBuild tulajdonság egy projekt attribútumgenerálását szabályozza AssemblyInfo . Ha az GenerateAssemblyInfotrue érték (ez az alapértelmezett), a csomaghoz kapcsolódó projekttulajdonságok szerelvényattribútumokká alakulnak. Az alábbi táblázat az attribútumokat létrehozó projekttulajdonságokat sorolja fel. Emellett felsorolja azokat a tulajdonságokat is, amelyekkel attribútumonként tilthatja le a generációt, például:

<PropertyGroup>
  <GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
MSBuild tulajdonság Szerelvény attribútuma Tulajdonság az attribútumlétrehozás letiltásához
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

Megjegyzések ezekről a beállításokról:

  • AssemblyVersion és FileVersion alapértelmezés szerint az utótag nélküli értékre $(Version) . Ha például igen 1.2.3-beta.4, $(Version) akkor az érték az lenne 1.2.3.
  • InformationalVersionalapértelmezés szerint a következő értékre van adva: .$(Version)
  • Ha a $(SourceRevisionId) tulajdonság jelen van, a program hozzáfűzi a tulajdonsághoz InformationalVersion. Ezt a viselkedést letilthatja a következővel IncludeSourceRevisionInInformationalVersion: .
  • Copyright és Description a tulajdonságok a NuGet-metaadatokhoz is használhatók.
  • Configurationaz alapértelmezett érték Debugaz összes MSBuild-célhellyel meg van osztva. A parancsok, például a --configuration dotnet-csomag beállításával dotnet állítható be.
  • Néhány tulajdonság a NuGet-csomagok létrehozásakor használatos. További információ: Csomagtulajdonságok.

Tetszőleges attribútumok beállítása

A létrehozott fájlhoz saját szerelvényattribútumokat is hozzáadhat. Ehhez határozza meg <AssemblyAttribute> az MSBuild elemeket, amelyek közlik az SDK-val, hogy milyen típusú attribútumot kell létrehozni. Ezeknek az elemeknek tartalmazniuk kell az attribútumhoz szükséges konstruktorparamétereket is. Az attribútumnak például System.Reflection.AssemblyMetadataAttribute van egy konstruktora, amely két sztringet vesz fel:

  • Tetszőleges értéket leíró név.
  • A tárolni kívánt érték.

Ha az MSBuildben olyan Date tulajdonsága volt, amely tartalmazza a szerelvény létrehozásának dátumát, a következő MSBuild-kóddal ágyazhatja AssemblyMetadataAttribute be ezt a dátumot a szerelvényattribútumokba:

<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>

Ez az elem arra utasítja a .NET SDK-t, hogy a következő C# (vagy azzal egyenértékű F# vagy Visual Basic) értéket adja ki szerelvényszintű attribútumként:

[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]

(A tényleges dátumsztring minden, amit a build időpontjában adott meg.)

Migrálás .NET-keretrendszerből

Ha a .NET-keretrendszer projektet a .NET 6-os vagy újabb verziójába migrálja, előfordulhat, hogy a szerelvényadatok duplikálásával kapcsolatos hibát tapasztal. Ennek az az oka, hogy .NET-keretrendszer projektsablonok létrehoznak egy kódfájlt szerelvényinformációs attribútumokkal. A fájl általában a következő helyen található: .\Properties\AssemblyInfo.cs vagy .\Properties\AssemblyInfo.vb. Az SDK-stílusú projektek azonban a projektbeállítások alapján is létrehozzák ezt a fájlt.

Amikor a kódot a .NET 6-os vagy újabb verziójába portozza, tegye az alábbiak egyikét:

  • Tiltsa le a szerelvényadatok attribútumait tartalmazó ideiglenes kódfájl létrehozását a projektfájlban való beállítással GenerateAssemblyInfofalse . Ez lehetővé teszi a AssemblyInfo-fájl megőrzését.
  • Migrálja a AssemblyInfo fájl beállításait a projektfájlba, majd törölje a AssemblyInfo fájlt.