Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile usare una proprietà MSBuild per trasformare le proprietà del progetto correlate al pacchetto in attributi di assembly in un file di codice generato. Inoltre, è possibile usare gli elementi MSBuild per aggiungere attributi di assembly arbitrari al file generato.
Usare le proprietà del pacchetto come attributi dell'assembly
La proprietà GenerateAssemblyInfo MSBuild controlla la generazione degli attributi per un progetto. Quando il GenerateAssemblyInfo valore è true (ovvero l'impostazione predefinita), le proprietà del progetto correlate al pacchetto vengono trasformate in attributi di assembly. Nella tabella seguente sono elencate le proprietà del progetto che generano gli attributi. Vengono inoltre elencate le proprietà che è possibile usare per disabilitare tale generazione in base all'attributo, ad esempio:
<PropertyGroup>
<GenerateNeutralResourcesLanguageAttribute>false</GenerateNeutralResourcesLanguageAttribute>
</PropertyGroup>
| Proprietà MSBuild | Attributo assembly | Proprietà per disabilitare la generazione di attributi |
|---|---|---|
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 |
Note sulle impostazioni seguenti:
-
AssemblyVersioneFileVersionpredefiniscono al valore di$(Version)senza il suffisso. Ad esempio, se$(Version)è1.2.3-beta.4, il valore sarà1.2.3. -
InformationalVersionha come valore predefinito$(Version). - Se la
$(SourceRevisionId)proprietà è presente, viene aggiunta aInformationalVersion. È possibile disabilitare questo comportamento usandoIncludeSourceRevisionInInformationalVersion. -
CopyrighteDescriptionle proprietà vengono usate anche per i metadati NuGet. -
Configuration, che per impostazione predefinita èDebug, viene condiviso con tutti i target MSBuild. È possibile impostarlo tramite l'opzione--configurationdeidotnetcomandi, ad esempio dotnet pack. - Alcune delle proprietà vengono usate durante la creazione di un pacchetto NuGet. Per altre informazioni, vedere Proprietà del pacchetto.
Impostare attributi arbitrari
È anche possibile aggiungere attributi di assembly personalizzati al file generato. A tale scopo, definire <AssemblyAttribute> gli elementi di MSBuild che indicano all'SDK il tipo di attributo da creare. Questi elementi devono includere anche tutti i parametri del costruttore necessari per tale attributo. Ad esempio, l'attributo System.Reflection.AssemblyMetadataAttribute ha un costruttore che accetta due stringhe:
- Nome per descrivere un valore arbitrario.
- Valore da archiviare.
Se si dispone di una Date proprietà in MSBuild contenente la data di creazione di un assembly, è possibile usare AssemblyMetadataAttribute per incorporare tale data negli attributi dell'assembly usando il codice MSBuild seguente:
<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>
Questo elemento indica a .NET SDK di generare il codice C# seguente (o F# o Visual Basic equivalente) come attributo a livello di assembly:
[assembly: System.Reflection.AssemblyMetadataAttribute("BuildDate", "01/19/2024")]
La stringa di data effettiva sarà quella specificata al momento della compilazione.
Se l'attributo ha tipi di parametro diversi da System.String, è possibile specificare i parametri usando un modello specifico di elementi XML supportati dall'attività MSBuild WriteCodeFragment . Vedi attività WriteCodeFragment - Generare attributi a livello di assembly.
Eseguire la migrazione da .NET Framework
Se si esegue la migrazione del progetto .NET Framework a .NET 6 o versione successiva, potrebbe verificarsi un errore correlato ai file di informazioni sull'assembly duplicati. Questo perché i modelli di progetto .NET Framework creano un file di codice con attributi delle informazioni sull'assembly impostati. Il file si trova in genere in .\Properties\AssemblyInfo.cs o .\Properties\AssemblyInfo.vb. Tuttavia, anche i progetti in stile SDK generano questo file in base alle impostazioni del progetto.
Quando si esegue la conversione del codice in .NET 6 o versione successiva, eseguire una delle operazioni seguenti:
- Disabilitare la generazione del file di codice temporaneo che contiene gli attributi delle informazioni sull'assembly impostando
GenerateAssemblyInfosufalsenel file di progetto. In questo modo è possibile mantenere il file AssemblyInfo . - Eseguire la migrazione delle impostazioni nel file AssemblyInfo al file di progetto e quindi eliminare il file AssemblyInfo .