Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können eine MSBuild-Eigenschaft verwenden, um paketbezogene Projekteigenschaften in Assemblyattribute in einer generierten Codedatei zu transformieren. Darüber hinaus können Sie MSBuild-Elemente verwenden, um der generierten Datei beliebige Assemblyattribute hinzuzufügen.
Verwenden von Paketeigenschaften als Assemblyattribute
Die GenerateAssemblyInfo
MSBuild-Eigenschaft steuert die AssemblyInfo
Attributgenerierung für ein Projekt. Wenn der GenerateAssemblyInfo
Wert ist true
(der Standardwert ist), werden paketbezogene Projekteigenschaften in Assemblyattribute umgewandelt. In der folgenden Tabelle sind die Projekteigenschaften aufgeführt, die die Attribute generieren. Außerdem werden die Eigenschaften aufgelistet, mit denen Sie diese Generierung pro Attribut deaktivieren können, z. B.:
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
MSBuild-Eigenschaft | Assembly-Attribut | Eigenschaft zum Deaktivieren der Attributgenerierung |
---|---|---|
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 |
Hinweise zu diesen Einstellungen:
-
AssemblyVersion
undFileVersion
sind standardmäßig auf den Wert von$(Version)
ohne das Suffix gesetzt. Wenn$(Version)
1.2.3-beta.4
ist, dann wäre der Wert1.2.3
. -
InformationalVersion
wird standardmäßig auf den Wert von$(Version)
gesetzt. - Wenn die Eigenschaft
$(SourceRevisionId)
vorhanden ist, wird sie anInformationalVersion
angefügt. Sie können dieses Verhalten mithilfe vonIncludeSourceRevisionInInformationalVersion
deaktivieren. -
Copyright
undDescription
Eigenschaften werden auch für NuGet-Metadaten verwendet. -
Configuration
weist standardmäßig den WertDebug
auf und wird für alle MSBuild-Ziele freigegeben. Sie können sie über die--configuration
Option vondotnet
Befehlen festlegen, z. B. dotnet pack. - Einige der Eigenschaften werden beim Erstellen eines NuGet-Pakets verwendet. Weitere Informationen finden Sie unter "Paketeigenschaften".
Festlegen beliebiger Attribute
Es ist möglich, der generierten Datei auch eigene Assemblyattribute hinzuzufügen. Definieren Sie <AssemblyAttribute>
dazu MSBuild-Elemente, die dem SDK mitteilen, welcher Typ von Attribut erstellt werden soll. Diese Elemente sollten auch alle Konstruktorparameter enthalten, die für dieses Attribut erforderlich sind. Das System.Reflection.AssemblyMetadataAttribute-Attribut verfügt beispielsweise über einen Konstruktor, der zwei Zeichenfolgen entgegennimmt.
- Ein Name, der einen beliebigen Wert beschreibt.
- Der zu speichernde Wert.
Wenn Sie eine Date
Eigenschaft in MSBuild hatten, die das Datum enthielt, an dem eine Assembly erstellt wurde, könnten AssemblyMetadataAttribute
Sie dieses Datum mithilfe des folgenden MSBuild-Codes in die Assemblyattribute einbetten:
<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>
Dieses Element weist das .NET SDK an, den folgenden C# (oder gleichwertigen F# oder Visual Basic) als Attribut auf Assemblyebene auszugeben:
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
(Die tatsächliche Datumszeichenfolge wäre das, was Sie zum Zeitpunkt des Builds angegeben haben.)
Wenn das Attribut andere Parametertypen aufweist als System.String
, können Sie die Parameter mithilfe eines bestimmten Musters von XML-Elementen angeben, die von der MSBuild-Aufgabe WriteCodeFragment
unterstützt werden. Siehe WriteCodeFragment-Aufgabe – Generieren von Attributen auf Assemblyebene.
Migration von .NET Framework
Wenn Sie Ihr .NET Framework-Projekt zu .NET 6 oder höher migrieren, tritt möglicherweise ein Fehler im Zusammenhang mit doppelten Assemblyinformationen auf. Das liegt daran, dass .NET Framework-Projektvorlagen eine Codedatei mit assembly-Infoattributen erstellen. Die Datei befindet sich in der Regel unter .\Properties\AssemblyInfo.cs oder .\Properties\AssemblyInfo.vb. Projekte im SDK-Stil generieren diese Datei jedoch auch basierend auf den Projekteinstellungen.
Führen Sie beim Portieren des Codes zu .NET 6 oder höher eine der folgenden Aktionen aus:
- Deaktivieren Sie die Generierung der temporären Codedatei, die die Assembly-Info-Attribute enthält, indem Sie
GenerateAssemblyInfo
auffalse
in Ihrer Projektdatei setzen. Auf diese Weise können Sie die AssemblyInfo-Datei beibehalten. - Migrieren Sie die Einstellungen in der AssemblyInfo-Datei in die Projektdatei, und löschen Sie dann die AssemblyInfo-Datei .