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.
Questa pagina è un riferimento per le proprietà e gli elementi di MSBuild che è possibile usare per configurare .NET progetti.
Note
Questa pagina è un lavoro in corso e non elenca tutte le proprietà di MSBuild utili per .NET SDK. Per un elenco delle proprietà comuni di MSBuild, vedere Proprietà comuni di MSBuild.
Proprietà di convalida dell'assembly
Queste proprietà ed elementi vengono passati all'attività . Per altre informazioni sulla convalida degli assembly, vedere Convalida dell'assembly.
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- ApiCompatStrictMode
- ApiCompatValidateAssemblies
Note
Queste proprietà non fanno ancora parte dell'SDK di .NET. Per usarle, è anche necessario aggiungere un oggetto a Microsoft.DotNet.ApiCompat.Task.
Inoltre, le proprietà seguenti documentate nelle Proprietà di convalida del pacchetto si applicano anche alla convalida dell'assembly:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- NoWarn
- RoslynAssembliesPath
ApiCompatStrictMode
Se impostata su , la proprietà specifica che i controlli di compatibilità dell'API devono essere eseguiti in modalità strict.
<PropertyGroup>
<ApiCompatStrictMode>true</ApiCompatStrictMode>
</PropertyGroup>
ApiCompatValidateAssemblies
La proprietà abilita una serie di convalide negli assembly specificati. Per altre informazioni, vedere Convalida dell'assembly.
<PropertyGroup>
<ApiCompatValidateAssemblies>true</ApiCompatValidateAssemblies>
</PropertyGroup>
Proprietà dell'attributo assembly
- GenerateAssemblyInfo
- GeneratedAssemblyInfoFile
- IncludeSourceRevisionInInformationalVersion
- SourceRevisionId
GenerateAssemblyInfo
La proprietà controlla la generazione dell'attributo per il progetto. Il valore predefinito è . Usare per disabilitare la generazione del file:
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
L'impostazione GeneratedAssemblyInfoFile controlla il nome del file generato.
Quando il valore è , le proprietà del progetto correlate al pacchetto vengono trasformate in attributi di assembly.
Per altre informazioni sulla generazione di attributi di assembly tramite un file di progetto, vedere Impostare gli attributi dell'assembly in un file di progetto.
GeneratedAssemblyInfoFile
La proprietà definisce il percorso relativo o assoluto del file di informazioni sull'assembly generato. Il valore predefinito è un file denominato [project-name]. Assemblyinfo. [cs|vb] nella directory (in genere obj).
<PropertyGroup>
<GeneratedAssemblyInfoFile>assemblyinfo.cs</GeneratedAssemblyInfoFile>
</PropertyGroup>
IncludeSourceRevisionInInformationalVersion
La proprietà controlla se il valore viene aggiunto all'attributo assembly. Il valore predefinito è . Impostarlo su per disabilitare questo comportamento:
<PropertyGroup>
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
</PropertyGroup>
Per altre informazioni, vedere collegamento Source incluso in .NET SDK.
SourceRevisionId
La proprietà contiene l'ID revisione del controllo del codice sorgente per la compilazione, ad esempio un hash di commit Git. A partire da .NET 8, .NET SDK popola automaticamente questa proprietà con l'hash di commit quando è presente Source Link. Se impostato, il relativo valore viene aggiunto all'attributo assembly.
<PropertyGroup>
<SourceRevisionId>abc1234</SourceRevisionId>
</PropertyGroup>
Per altre informazioni, vedere collegamento Source incluso in .NET SDK.
Proprietà del framework
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- TargetFramework
- TargetFrameworks
- NetStandardImplicitPackageVersion
TargetFramework
La proprietà specifica la versione del framework di destinazione per l'app. Per un elenco di moniker del framework di destinazione validi, vedere Framework di destinazione nei progetti in stile SDK.
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
Per altre informazioni, vedere Framework di destinazione nei progetti in stile SDK.
TargetFrameworks
Usare la proprietà quando si vuole che l'app sia destinata a più piattaforme. Per un elenco di moniker del framework di destinazione validi, vedere Framework di destinazione nei progetti in stile SDK.
Note
Se si specifica (plurale), (singolare) viene ignorato.
<PropertyGroup>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
</PropertyGroup>
Per altre informazioni, vedere Framework di destinazione nei progetti in stile SDK.
NetStandardImplicitPackageVersion
Note
Questa proprietà si applica solo ai progetti che usano . Non si applica ai progetti che usano .
Usare la proprietà quando si vuole specificare una versione del framework inferiore alla versione del metapacchetto. Il file di progetto nell'esempio seguente è destinato a ma usa la versione 1.6.0 di .
<PropertyGroup>
<TargetFramework>netstandard1.3</TargetFramework>
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>
Proprietà del pacchetto
- Proprietà descrittive
- PackRelease
Proprietà descrittive
È possibile specificare proprietà come , , , e per descrivere il pacchetto creato dal progetto. Per informazioni su queste e altre proprietà, vedere la destinazione del pacchetto.
<PropertyGroup>
...
<PackageId>ClassLibDotNetStandard</PackageId>
<Version>1.0.0</Version>
<Authors>John Doe</Authors>
<Company>Contoso</Company>
</PropertyGroup>
PackRelease
La proprietà è simile alla proprietà PublishRelease, ad eccezione del fatto che modifica il comportamento predefinito di . Questa proprietà è stata introdotta in .NET 7.
<PropertyGroup>
<PackRelease>true</PackRelease>
</PropertyGroup>
Note
A partire da .NET 8 SDK, per impostazione predefinita PackRelease viene true. Per altre informazioni, vedere il 'pacchetto dotnet' utilizza la configurazione Release.
Proprietà di convalida dei pacchetti
Queste proprietà ed elementi vengono passati all'attività . Per altre informazioni sulla convalida dei pacchetti, vedere Panoramica della convalida dei pacchetti.
Per le proprietà per l'attività , vedere Proprietà di convalida dell'assembly.
Le proprietà e gli elementi di MSBuild seguenti sono documentati in questa sezione:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- EnablePackageValidation
- EnableStrictModeForBaselineValidation
- EnableStrictModeForCompatibleFrameworksInPackage
- EnableStrictModeForCompatibleTfms
- NoWarn
- PackageValidationBaselineFrameworkToIgnore
- PackageValidationBaselineName
- PackageValidationBaselineVersion
- PackageValidationReferencePath
- RoslynAssembliesPath
ApiCompatEnableRuleAttributesMustMatch
Se impostata su , la proprietà abilita la regola di convalida che controlla se gli attributi corrispondono. Il valore predefinito è .
<PropertyGroup>
<ApiCompatEnableRuleAttributesMustMatch>true</ApiCompatEnableRuleAttributesMustMatch>
</PropertyGroup>
ApiCompatEnableRuleCannotChangeParameterName
Se impostata su , la proprietà abilita la regola di convalida che controlla se i nomi dei parametri sono stati modificati nei metodi pubblici. Il valore predefinito è .
<PropertyGroup>
<ApiCompatEnableRuleCannotChangeParameterName>true</ApiCompatEnableRuleCannotChangeParameterName>
</PropertyGroup>
ApiCompatExcludeAttributesFile
L'elemento specifica il percorso di un file che contiene attributi da escludere in formato DocId.
<ItemGroup>
<ApiCompatExcludeAttributesFile Include="ApiCompatExcludedAttributes.txt" />
<ApiCompatExcludeAttributesFile Include="ApiCompatBaselineExcludedAttributes.txt" />
</ItemGroup>
ApiCompatGenerateSuppressionFile
La proprietà specifica se generare un file di eliminazione della compatibilità.
<PropertyGroup>
<ApiCompatGenerateSuppressionFile>true</ApiCompatGenerateSuppressionFile>
</PropertyGroup>
ApiCompatPermitUnnecessarySuppressions
La proprietà specifica se consentire eliminazioni non necessarie nel file di eliminazione.
Il valore predefinito è .
<PropertyGroup>
<ApiCompatPermitUnnecessarySuppressions>true</ApiCompatPermitUnnecessarySuppressions>
</PropertyGroup>
ApiCompatPreserveUnnecessarySuppressions
La proprietà specifica se mantenere eliminazioni non necessarie durante la rigenerazione del file di eliminazione. Quando un file di eliminazione esistente viene rigenerato, il relativo contenuto viene letto, deserializzato in un set di eliminazioni e quindi archiviato in un elenco. Alcune delle eliminazioni potrebbero non essere più necessarie se l'incompatibilità è stata risolta. Quando le eliminazioni vengono serializzate su disco, è possibile scegliere di mantenere tutte le espressioni esistenti (deserializzate) impostando questa proprietà su .
Il valore predefinito è .
<PropertyGroup>
<ApiCompatPreserveUnnecessarySuppressions>true</ApiCompatPreserveUnnecessarySuppressions>
</PropertyGroup>
ApiCompatRespectInternals
La proprietà specifica se è necessario verificare la compatibilità delle API oltre alle API .
<PropertyGroup>
<ApiCompatRespectInternals>true</ApiCompatRespectInternals>
</PropertyGroup>
ApiCompatSuppressionFile
L'elemento specifica il percorso di uno o più file di eliminazione da cui leggere. Se non specificato, il file di eliminazione project-directory/CompatibilitySuppressions.xml viene letto (se esistente).
<ItemGroup>
<ApiCompatSuppressionFile Include="CompatibilitySuppressions.xml;CompatibilitySuppressions.WasmThreads.xml" />
</ItemGroup>
ApiCompatSuppressionOutputFile
La proprietà specifica il percorso di un file di eliminazione in cui scrivere quando è . Se non specificato, viene utilizzato il primo elemento .
EnablePackageValidation
La proprietà abilita una serie di convalide nel pacchetto dopo l'attività . Per altre informazioni, vedere Convalida del pacchetto.
<PropertyGroup>
<EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>
EnableStrictModeForBaselineValidation
Se impostata su , la proprietà abilita modalità strict per i controlli della baseline del pacchetto. Il valore predefinito è .
EnableStrictModeForCompatibleFrameworksInPackage
Se impostata su , la proprietà abilita la modalità strict per gli assembly compatibili in base al framework di destinazione. Il valore predefinito è .
EnableStrictModeForCompatibleTfms
Se impostata su , la proprietà abilita la modalità strict per gli assembly di contratto e implementazione per tutti i framework di destinazione compatibili. Il valore predefinito è .
NoWarn
La proprietà specifica gli ID di diagnostica da eliminare.
<PropertyGroup>
<NoWarn>$(NoWarn);PKV0001</NoWarn>
</PropertyGroup>
PackageValidationBaselineFrameworkToIgnore
L'elemento specifica un framework di destinazione da ignorare dal pacchetto di base. La stringa del framework deve corrispondere esattamente al nome della cartella nel pacchetto di base.
<ItemGroup>
<PackageValidationBaselineFrameworkToIgnore Include="netcoreapp2.1" />
</ItemGroup>
PackageValidationBaselineName
La proprietà specifica il nome del pacchetto di base per convalidare il pacchetto corrente. Se non specificato, viene utilizzato il valore .
PackageValidationBaselineVersion
La proprietà specifica la versione del pacchetto di base per convalidare il pacchetto corrente.
PackageValidationReferencePath
L'elemento specifica il percorso della directory in cui è possibile trovare l'assembly di riferimento per TFM.
<ItemGroup>
<PackageValidationReferencePath Include="path/to/reference-assembly" TargetFramework="net9.0" />
</ItemGroup>
RoslynAssembliesPath
La proprietà specifica il percorso della directory contenente gli assembly Microsoft.CodeAnalysis che si desidera utilizzare. È necessario impostare questa proprietà solo se si vuole eseguire il test con un compilatore più recente rispetto a quello presente nell'SDK.
Proprietà correlate alla pubblicazione
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- AppendRuntimeIdentifierToOutputPath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigDevFile
- GenerateRuntimeConfigurationFiles
- GenerateSatelliteAssembliesForCore
- IsPublishable
- PreserveCompilationContext
- PreserveCompilationReferences
- ProduceReferenceAssemblyInOutDir
- PublishDocumentationFile
- PublishDocumentationFiles
- PublishReferencesDocumentationFiles
- PublishReferencesSymbols
- PublishRelease
- PublishSelfContained
- RollForward
- RuntimeFrameworkVersion
- RuntimeIdentifier
- RuntimeIdentifiers
- SatelliteResourceLanguages
- SelfContained
- UseAppHost
AppendTargetFrameworkToOutputPath
La proprietà controlla se il moniker del framework di destinazione (TFM) viene aggiunto al percorso di output (definito da OutputPath). Il .NET SDK aggiunge automaticamente il framework di destinazione e, se presente, l'identificatore di runtime al percorso di output. L'impostazione per impedire l'accodamento del TFM al percorso di output. Tuttavia, senza TFM nel percorso di output, più artefatti della compilazione possono sovrascriversi tra loro.
Ad esempio, per un'app .NET 5, il percorso di output passa da bin\Debug\net5.0 a bin\Debug con l'impostazione seguente:
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
AppendRuntimeIdentifierToOutputPath
La proprietà controlla se l’identificatore di runtime (RID) viene aggiunto al percorso di output. Il .NET SDK aggiunge automaticamente il framework di destinazione e, se presente, l'identificatore di runtime (RID) al percorso di output. L'impostazione di su impedisce l'accodamento del RID al percorso di output. Tuttavia, il RID viene ancora aggiunto al percorso di pubblicazione. Per altre informazioni, vedere dotnet/sdk#12114.
Ad esempio, per un'app .NET 9 e un RID di win-x64, l'impostazione seguente modifica il percorso di output da bin\Debug\net9.0\win-x64 a bin\Debug\net9.0:
<PropertyGroup>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
CopyLocalLockFileAssemblies
La proprietà è utile per i progetti di plug-in con dipendenze da altre librerie. Se si imposta questa proprietà su , tutte le dipendenze transitive del pacchetto NuGet vengono copiate nella directory di output. Ciò significa che è possibile usare l'output di per eseguire il plug-in su qualsiasi computer.
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
Il valore predefinito di può variare in base al tipo di output. Ad esempio, per le librerie di classi il valore predefinito è , mentre per le applicazioni console il valore predefinito è . È possibile specificare questa proprietà in modo esplicito per eseguire l'override del valore predefinito, se necessario.
Tip
In alternativa, è possibile usare per pubblicare la libreria di classi. Per altre informazioni, vedere dotnet publish.
ErrorOnDuplicatePublishOutputFiles
La proprietà si riferisce al fatto che l'SDK generi un errore NETSDK1148 quando MSBuild rileva i file duplicati nell'output di pubblicazione, ma non è in grado di determinare quali file rimuovere. Impostare la proprietà su se non si desidera che venga generato l'errore.
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
Questa proprietà è stata introdotta in .NET 6.
GenerateRuntimeConfigDevFile
A partire dall'SDK .NET 6, il file [NomeApp].runtimesettings.dev.json è no più lungo generato per impostazione predefinita in fase di compilazione. Se si desidera che questo file venga comunque generato, impostare la proprietà su .
<PropertyGroup>
<GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
</PropertyGroup>
GenerateRuntimeConfigurationFiles
La proprietà controlla se le opzioni di configurazione del runtime vengono copiate dal file di runtimeconfig.template.json al file [appname].runtimeconfig.json. Per le app che richiedono un file di runtimeconfig.json, ovvero quelle il cui è , per impostazione predefinita questa proprietà è .
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
GenerateSatelliteAssembliesForCore
La proprietà GenerateSatelliteAssembliesForCore controlla se gli assembly satellite vengono generati usando csc.exe o Al.exe (Assembly Linker) nei progetti .NET Framework. (.NET Core e .NET 5 progetti+ usano sempre csc.exe per generare assembly satellite. Per i progetti .NET Framework, gli assembly satellite vengono creati da al.exe per impostazione predefinita. Impostando la proprietà su , gli assembly satellite vengono creati da csc.exe. L'uso di csc.exe può essere vantaggioso nelle situazioni seguenti:
- Si vuole usare l'opzione del compilatore C#.
- Si è limitati dal fatto che al.exe non ha alcun supporto per la firma pubblica e gestisce male.
<PropertyGroup>
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>
IsPublishable
La proprietà consente l'esecuzione della destinazione . Questa proprietà influisce solo sui processi che usano file .*proj e sulla destinazione , ad esempio il comando dotnet publish. Non influisce sulla pubblicazione in Visual Studio, che usa la destinazione PublishOnly. Il valore predefinito è .
Questa proprietà è utile se si esegue in un file di soluzione, in quanto consente la selezione automatica di progetti da pubblicare.
<PropertyGroup>
<IsPublishable>false</IsPublishable>
</PropertyGroup>
PreserveCompilationContext
La proprietà consente a un'applicazione compilata o pubblicata di compilare più codice in fase di esecuzione usando le stesse impostazioni usate in fase di compilazione. Gli assembly a cui viene fatto riferimento in fase di compilazione verranno copiati nella sottodirectory ref della directory di output. I nomi degli assembly di riferimento vengono archiviati nel file .deps.json dell'applicazione insieme alle opzioni passate al compilatore. È possibile recuperare queste informazioni usando le proprietà e .
Questa funzionalità viene usata internamente da ASP.NET Core pagine MVC e Razor per supportare la compilazione in fase di esecuzione dei file Razor.
<PropertyGroup>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
PreserveCompilationReferences
La proprietà è simile alla proprietà PreserveCompilationContext, ad eccezione del fatto che copia solo gli assembly di riferimento nella directory di pubblicazione e non il file .deps.json.
<PropertyGroup>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>
Per altre informazioni, vedere proprietà di Razor SDK.
ProduceReferenceAssemblyInOutDir
In .NET 5 e versioni precedenti gli assembly di riferimento vengono sempre scritti nella directory OutDir. In .NET 6 e versioni successive è possibile usare la proprietà ProduceReferenceAssemblyInOutDir per controllare se gli assembly di riferimento vengono scritti nella directory OutDir. Il valore predefinito è e gli assembly di riferimento vengono scritti solo nella directory . Impostare il valore su per scrivere assembly di riferimento nella directory .
<PropertyGroup>
<ProduceReferenceAssemblyInOutDir>true</ProduceReferenceAssemblyInOutDir>
</PropertyGroup>
Per altre informazioni, vedere Scrivere assembly di riferimento nell'output intermedio.
PublishDocumentationFile
Quando questa proprietà è , il file di documentazione XML per il progetto, se ne viene generato uno, viene incluso nell'output di pubblicazione per il progetto. Questa proprietà viene impostata sul valore predefinito .
Tip
Impostare GenerateDocumentationFile su per generare un file di documentazione XML in fase di compilazione.
PublishDocumentationFiles
Questa proprietà è un flag di abilitazione per diverse altre proprietà che controllano se diversi tipi di file di documentazione XML vengono copiati nella directory di pubblicazione per impostazione predefinita, ovvero PublishDocumentationFile e PublishReferencesDocumentationFiles. Se tali proprietà non sono impostate e questa proprietà viene impostata, tali proprietà verranno impostate per impostazione predefinita su . Questa proprietà viene impostata sul valore predefinito .
PublishReferencesDocumentationFiles
Quando questa proprietà è , i file di documentazione XML per i riferimenti del progetto vengono copiati nella directory di pubblicazione, anziché solo gli asset di runtime come i file DLL. Questa proprietà viene impostata sul valore predefinito .
PublishReferencesSymbols
Quando questa proprietà è , i file di simboli (noti anche come file PDB) per i riferimenti del progetto vengono copiati nella directory di pubblicazione, anziché semplicemente asset di runtime come i file DLL. Questa proprietà viene impostata sul valore predefinito .
PublishRelease
La proprietà informa di usare la configurazione per impostazione predefinita anziché la configurazione . Questa proprietà è stata introdotta in .NET 7.
<PropertyGroup>
<PublishRelease>true</PublishRelease>
</PropertyGroup>
Note
- A partire da .NET 8 SDK, per impostazione predefinita
PublishReleasevienetrueper i progetti destinati .NET 8 o versioni successive. Per altre informazioni, vedere 'dotnet publish' usa la configurazione della release. - Questa proprietà non influisce sul comportamento di
dotnet build /t:Publishe modifica la configurazione solo durante la pubblicazione tramite l'interfaccia della riga di comando di .NET.
PublishSelfContained
La proprietà informa di pubblicare un'app come app autonoma. Questa proprietà è utile quando non è possibile usare l'argomento per il comando dotnet publish, ad esempio quando si pubblica a livello di soluzione. In tal caso, è possibile aggiungere la proprietà MSBuild a un progetto o al file directory.Build.Props.
Questa proprietà è stata introdotta in .NET 7. È simile alla proprietà SelfContained, ad eccezione del fatto che è specifico del verbo . È consigliabile usare anziché .
<PropertyGroup>
<PublishSelfContained>true</PublishSelfContained>
</PropertyGroup>
RollForward
La proprietà controlla il modo in cui l'applicazione sceglie un runtime quando sono disponibili più versioni di runtime. Questo valore viene restituito a .runtimeconfig.json come l’impostazione .
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
Impostare su uno dei valori seguenti:
| Value | Description |
|---|---|
Minor |
Impostazione predefinita se non specificato. Eseguire il rollforward alla versione secondaria successiva disponibile successiva (e alla versione della patch più elevata disponibile all'interno di tale versione secondaria), se manca la versione secondaria richiesta. Se la versione secondaria richiesta è presente, viene usato il criterio . |
Major |
Eseguire il rollforward alla successiva versione principale disponibile successiva (alla versione secondaria disponibile più bassa e alla versione più recente disponibile della patch all'interno di tale versione secondaria), se la versione principale richiesta è mancante. Se la versione principale richiesta è presente, viene usato il criterio . |
LatestPatch |
Eseguire il roll forward alla versione patch più recente disponibile per le versioni principali e secondarie richieste. Questo valore disabilita il roll forward della versione secondaria. |
LatestMinor |
Eseguire il roll forward alla versione secondaria più recente disponibile per la versione principale richiesta (e la versione della patch più elevata disponibile all'interno di tale versione secondaria), anche se è presente una versione secondaria richiesta. |
LatestMajor |
Eseguire il roll forward alla versione principale più recente disponibile (e alla versione secondaria e patch più recente disponibile all'interno di tale versione principale), anche se è presente la versione principale richiesta. |
Disable |
Non eseguire il roll forward, associa solo alla versione specificata. Non è consigliato usare questo criterio per scopi generali poiché disabilita la possibilità di eseguire il roll forward alle patch più recenti. Questo valore è consigliato solo a scopo di test. |
Per altre informazioni, vedere Comportamento di roll forward del controllo.
RuntimeFrameworkVersion
La proprietà specifica la versione del runtime da utilizzare durante la pubblicazione. Specificare una versione di runtime:
<PropertyGroup>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>
Quando si pubblica un'applicazione dipendente dal framework, questo valore specifica la versione minima richiesta. Quando si pubblica un'applicazione autonoma, questo valore specifica la versione esatta richiesta.
RuntimeIdentifier
La proprietà consente di specificare un singolo identificatore di runtime (RID) per il progetto. Il RID consente di pubblicare una distribuzione autonoma.
<PropertyGroup>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
</PropertyGroup>
RuntimeIdentifiers
La proprietà consente di specificare un elenco delimitato da punto e virgola di identificatori di runtime (RID) per il progetto. Utilizzare questa proprietà se è necessario pubblicare per più runtime. viene usato in fase di ripristino per assicurarsi che gli asset corretti siano presenti nel grafico.
Tip
(singolare) può fornire compilazioni più veloci quando è necessario un solo runtime.
<PropertyGroup>
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>
SatelliteResourceLanguages
La proprietà consente di specificare per quali lingue si desidera mantenere gli assembly di risorse satellite durante la compilazione e la pubblicazione. Molti pacchetti NuGet includono assembly satellite delle risorse localizzati nel pacchetto principale. Per i progetti che fanno riferimento a questi pacchetti NuGet che non richiedono risorse localizzate, gli assembly localizzati possono inutilmente gonfiare le dimensioni di compilazione e pubblicazione dell'output. Aggiungendo la proprietà al file di progetto, solo gli assembly localizzati per le lingue specificate verranno inclusi nell'output di compilazione e pubblicazione. Nel file di progetto seguente, ad esempio, verranno conservati solo gli assembly satellite delle risorse in lingua inglese (Stati Uniti) e tedesco (Germania).
<PropertyGroup>
<SatelliteResourceLanguages>en-US;de-DE</SatelliteResourceLanguages>
</PropertyGroup>
Note
È necessario specificare questa proprietà nel progetto che fa riferimento al pacchetto NuGet con assembly satellite delle risorse localizzati.
Per specificare più lingue come argomento per , è necessario aggiungere tre coppie di virgolette intorno agli identificatori di lingua. Per esempio:
dotnet msbuild multi.msbuildproj -p:SatelliteResourceLanguages="""de;en"""
SelfContained
La proprietà informa e di compilare o pubblicare un'app come app autonoma. Questa proprietà è utile quando non è possibile usare l'argomento con il comando dotnet, ad esempio quando si pubblica a livello di soluzione. In tal caso, è possibile aggiungere la proprietà MSBuild a un progetto o al file directory.Build.Props.
Questa proprietà è simile alla proprietà PublishSelfContained. È consigliabile usare anziché quando possibile.
<PropertyGroup>
<SelfContained>true</SelfContained>
</PropertyGroup>
UseAppHost
La proprietà controlla se viene creato o meno un eseguibile nativo per una distribuzione. Per le distribuzioni autonome è necessario un eseguibile nativo. Per impostazione predefinita, viene creato un eseguibile dipendente dal framework. Impostare la proprietà su per disabilitare la generazione dell’eseguibile.
<PropertyGroup>
<UseAppHost>false</UseAppHost>
</PropertyGroup>
Per altre informazioni sulla distribuzione, vedere .NET distribuzione di applicazioni.
Proprietà correlate al taglio
Numerose proprietà di MSBuild sono disponibili per ottimizzare il taglio, ovvero una funzionalità che elimina il codice inutilizzato dalle distribuzioni autonome. Queste opzioni sono descritte in dettaglio in opzioni taglio. Nella tabella seguente viene fornito un riferimento rapido.
| Property | Values | Description |
|---|---|---|
PublishTrimmed |
oppure | Controlla se il taglio è abilitato durante la pubblicazione. |
TrimMode |
oppure | Il valore predefinito è . Controlla la granularità di taglio. |
SuppressTrimAnalysisWarnings |
oppure | Controlla se vengono generati avvisi di analisi di taglio. |
EnableTrimAnalyzer |
oppure | Controlla se viene generato un subset di avvisi di analisi di taglio. È possibile abilitare l'analisi anche se è impostato su . |
ILLinkTreatWarningsAsErrors |
oppure | Controlla se gli avvisi di taglio vengono considerati come errori. Ad esempio, è possibile impostare questa proprietà su quando è impostato su . |
TrimmerSingleWarn |
oppure | Controlla se viene visualizzato un singolo avviso per assembly o tutti gli avvisi. |
TrimmerRemoveSymbols |
oppure | Controlla se tutti i simboli vengono rimossi da un'applicazione eliminata. |
Proprietà correlate alla compilazione
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- ContinuousIntegrationBuild
- CopyDebugSymbolFilesFromPackages
- CopyDocumentationFilesFromPackages
- DisableImplicitFrameworkDefines
- DocumentationFile
- EmbeddedResourceUseDependentUponConvention
- EnablePreviewFeatures
- EnableWindowsTargeting
- GenerateDocumentationFile
- GenerateRequiresPreviewFeaturesAttribute
- OptimizeImplicitlyTriggeredBuild
- DisableRuntimeMarshalling
- BuildWithNetFrameworkHostedCompiler
- RoslynCompilerType
Le opzioni del compilatore C#, ad esempio e , possono essere specificate anche come proprietà MSBuild nel file di progetto. Per altre informazioni, vedere Opzioni del compilatore C#.
ContinuousIntegrationBuild
La proprietà indica se una compilazione è in esecuzione in un server di integrazione continua (CI). Se impostata su , questa proprietà abilita le impostazioni che si applicano solo alle build ufficiali anziché alle build locali in un computer per sviluppatori. Ad esempio, i percorsi di file archiviati vengono normalizzati per le build ufficiali. In un computer di sviluppo locale, tuttavia, il debugger non è in grado di trovare i file di origine locali se i percorsi dei file sono normalizzati.
È possibile usare la variabile del sistema CI per impostare in modo condizionale la proprietà . Ad esempio, il nome della variabile per Azure Pipelines è TF_BUILD:
<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
Per GitHub Actions, il nome della variabile è GITHUB_ACTIONS:
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
CopyDebugSymbolFilesFromPackages
Quando questa proprietà è impostata su , tutti i file di simboli (noti anche come file PDB) dagli elementi del progetto vengono copiati nell'output di compilazione. Questi file possono fornire analisi dello stack più informative per le eccezioni e rendere più facili da riconoscere i dump e le tracce di memoria dell'applicazione in esecuzione. Tuttavia, l'inclusione di questi file comporta un aumento delle dimensioni del pacchetto di distribuzione.
Questa proprietà è stata introdotta in .NET SDK 7.0.100, anche se per impostazione predefinita non viene specificata.
CopyDocumentationFilesFromPackages
Quando questa proprietà è impostata su , tutti i file di documentazione XML generati dagli elementi del progetto vengono copiati nell'output di compilazione. Si noti che l'abilitazione di questa funzionalità comporterà un aumento delle dimensioni del pacchetto di distribuzione.
Questa proprietà è stata introdotta in .NET SDK 7.0.100, anche se per impostazione predefinita non viene specificata.
DisableImplicitFrameworkDefines
La proprietà DisableImplicitFrameworkDefines controlla se l'SDK genera o meno simboli del preprocessore per il framework di destinazione e la piattaforma per il progetto .NET. Quando questa proprietà è impostata su o è annullata (ovvero il valore predefinito) i simboli del preprocessore vengono generati per:
- Framework senza versione (, , )
- Framework con versione (, , )
- Framework con limite di versione minima (, , )
Per altre informazioni sui moniker del framework di destinazione e su questi simboli del preprocessore implicito, vedere Framework di destinazione.
Inoltre, se si specifica un framework di destinazione specifico del sistema operativo nel progetto (ad esempio ), vengono generati i simboli del preprocessore seguenti:
- Piattaforma senza versione (, , )
- Piattaforma con versione ()
- Piattaforma con limite minimo di versione ()
Per altre informazioni sui moniker del framework di destinazione specifici del sistema operativo, vedere TFM specifici del sistema operativo.
Infine, se il framework di destinazione implica il supporto per i framework di destinazione meno recenti, vengono generati simboli del preprocessore per tali framework meno recenti. Ad esempio, implica il supporto per e così via fino al ritorno a . Pertanto, per ognuno di questi framework di destinazione, verrà definito il simbolo di framework con limite di versione minima.
DocumentationFile
La proprietà consente di specificare un nome file per il file XML che contiene la documentazione per la libreria. Affinché IntelliSense funzioni correttamente con la documentazione, il nome del file deve essere uguale al nome dell'assembly e deve trovarsi nella stessa directory dell'assembly. Se non si specifica questa proprietà ma si imposta GenerateDocumentationFile su , il nome del file di documentazione viene impostato per impostazione predefinita sul nome dell'assembly, ma con un'estensione di file .xml. Per questo motivo, spesso è più facile omettere questa proprietà e usare la proprietà GenerateDocumentationFile.
Se si specifica questa proprietà ma si imposta GenerateDocumentationFile su , il compilatore non genera un file di documentazione. Se si specifica questa proprietà e si omette la proprietà GenerateDocumentationFile, il compilatore genera un file di documentazione.
<PropertyGroup>
<DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>
EmbeddedResourceUseDependentUponConvention
La proprietà definisce se i nomi di file manifesto della risorsa vengono generati da informazioni sul tipo nei file di origine che si trovano in condivisione con i file di risorse. Ad esempio, se Form1.resx si trova nella stessa cartella di Form1.cs e è impostato su , il file .resources generato prende il nome dal primo tipo definito in Form1.cs. Se è il primo tipo definito in Form1.cs, il nome del file generato è MyNamespace.Form1.resources.
Note
Se i metadati , o vengono specificati per un elemento , il nome del file manifesto generato per tale file di risorse si basa invece su tali metadati.
Per impostazione predefinita, in un nuovo progetto di .NET destinato .NET Core 3.0 o versione successiva, questa proprietà è impostata su true. Se è impostato su e non vengono specificati metadati , o per l'elemento nel file di progetto, il nome del file manifesto della risorsa si basa sullo spazio dei nomi radice per il progetto e sul percorso del file relativo .resx. Per altre informazioni, vedere Come vengono denominati i file manifesto delle risorse.
<PropertyGroup>
<EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
</PropertyGroup>
EnablePreviewFeatures
La proprietà definisce se il progetto dipende da qualsiasi API o assembly decorati con l'attributo . Questo attributo viene usato per indicare che un'API o un assembly usa funzionalità considerate in anteprima per la versione dell'SDK in uso. Le funzionalità di anteprima non sono supportate e possono essere rimosse in una versione futura. Per abilitare l'uso delle funzionalità di anteprima, impostare la proprietà su .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>
Quando un progetto contiene questa proprietà impostata su , l'attributo a livello di assembly seguente viene aggiunto al file AssemblyInfo.cs:
[assembly: RequiresPreviewFeatures]
Un analizzatore avvisa se questo attributo è presente nelle dipendenze per i progetti in cui non è impostato su .
Gli autori di librerie che intendono spedire gli assembly di anteprima devono impostare questa proprietà su . Se un assembly deve essere fornito con una combinazione di API di anteprima e non di anteprima, vedere la sezione GenerateRequiresPreviewFeaturesAttribute di seguito.
EnableWindowsTargeting
Impostare la proprietà EnableWindowsTargeting su true per compilare app Windows (ad esempio Windows Forms o app Windows Presentation Foundation) in una piattaforma non Windows. Se questa proprietà non viene impostata su , si otterrà un avviso di compilazione NETSDK1100. Questo errore si verifica perché la destinazione e i pacchetti runtime non vengono scaricati automaticamente sulle piattaforme non supportate. Impostando questa proprietà, tali pacchetti vengono scaricati quando si esegue il cross-targeting.
Note
Questa proprietà è attualmente consigliata per consentire lo sviluppo su piattaforme non Windows. Tuttavia, quando l'applicazione è pronta per essere rilasciata, deve essere compilata su Windows. Quando si esegue la compilazione su una piattaforma non Windows, l'output potrebbe non essere uguale a quando si compila su Windows. In particolare, l'eseguibile non è contrassegnato come un'applicazione Windows (il che significa che avvierà sempre una finestra della console) e non avrà un'icona incorporata.
<PropertyGroup>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>
GenerateDocumentationFile
La proprietà controlla se il compilatore genera un file di documentazione XML per la libreria. Se si imposta questa proprietà su e non si specifica un nome file tramite la proprietà DocumentationFile, il file XML generato viene inserito nella stessa directory di output dell'assembly e ha lo stesso nome file (ma con un'estensione .xml).
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
Per altre informazioni sulla generazione di documentazione dai commenti di codice, vedere commenti della documentazione XML (C#), Documentare il codice con XML (Visual Basic) o Documentare il codice con XML (F#).
GenerateRequiresPreviewFeaturesAttribute
La proprietà è strettamente correlata alla proprietà EnablePreviewFeatures. Se la libreria usa funzionalità di anteprima, ma non si vuole che l'intero assembly venga contrassegnato con l'attributo , che richiederebbe a tutti i consumer di abilitare le funzionalità di anteprima, impostare questa proprietà su .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
<GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>
Important
Se si imposta la proprietà su , è necessario essere certi di decorare tutte le API pubbliche che si basano sulle funzionalità di anteprima con .
OptimizeImplicitlyTriggeredBuild
Per velocizzare il tempo di compilazione, le compilazioni attivate in modo implicito da Visual Studio ignorare l'analisi del codice, inclusa l'analisi nullable. Visual Studio attiva una compilazione implicita quando si eseguono test, ad esempio. Tuttavia, le compilazioni implicite vengono ottimizzate solo quando non è . Se è stato impostato su ma si desidera comunque ottimizzare le compilazioni attivate in modo implicito, è possibile impostare su . Per disattivare l'ottimizzazione della compilazione per le compilazioni attivate in modo implicito, impostare su .
<PropertyGroup>
<OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>
DisableRuntimeMarshalling
La proprietà consente di specificare che si vuole disabilitare il supporto del marshalling di runtime per il progetto. Se questa proprietà è impostata su , l'oggetto viene aggiunto all'assembly e qualsiasi interoperabilità P/Invokes o basata su delegato seguirà le regole relative al marshalling di runtime disabilitato.
<PropertyGroup>
<DisableRuntimeMarshalling>True</DisableRuntimeMarshalling>
</PropertyGroup>
BuildWithNetFrameworkHostedCompiler
Specificare è l'equivalente di specificare . Per altre informazioni, vedere RoslynCompilerType. Specificando si garantisce che il consenso esplicito automatico a non venga eseguito. Se viene specificato in modo esplicito, non ha alcun effetto.
RoslynCompilerType
La proprietà RoslynCompilerType controlla la versione del compilatore C# o Visual Basic. Vengono riconosciuti i valori seguenti:
-
Core: usare il compilatore fornito con .NET SDK. Si tratta dell'impostazione predefinita a partire da .NET 10, anche quando si usa MSBuild di .NET Framework. -
Framework: usare il compilatore fornito con .NET Framework MSBuild. -
FrameworkPackage: quando si usa MSBuild di .NET Framework, scaricare e usare un pacchetto con il compilatore .NET Framework che corrisponde alla versione di .NET SDK.
Proprietà di inclusione degli elementi predefinite
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- DefaultItemExcludesInProjectFolder
- DefaultItemExcludes
- EnableDefaultCompileItems
- EnableDefaultEmbeddedResourceItems
- EnableDefaultItems
- EnableDefaultNoneItems
Per altre informazioni, vedere Inclusioni ed esclusioni predefinite.
DefaultItemExcludes
Utilizzare la proprietà per definire i criteri GLOB per file e cartelle che devono essere esclusi dall'inclusione, esclusione e rimozione di GLOB. Per impostazione predefinita, le cartelle ./bin e ./obj vengono escluse dai criteri GLOB.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/*.myextension</DefaultItemExcludes>
</PropertyGroup>
Note
La proprietà esclude i file e le cartelle dal controllo da parte di . Per altre informazioni, vedere Ignorare le cartelle e i file specificati da .
DefaultItemExcludesInProjectFolder
Utilizzare la proprietà per definire i criteri GLOB per file e cartelle nella cartella del progetto da escludere dall'inclusione, esclusione e rimozione di GLOB. Per impostazione predefinita, le cartelle che iniziano con un punto (), ad esempio .git e .vs, vengono escluse dai criteri GLOB.
Questa proprietà è molto simile alla proprietà , ad eccezione del fatto che considera solo i file e le cartelle nella cartella del progetto. Quando un criterio GLOB corrisponde involontariamente agli elementi all'esterno della cartella del progetto con un percorso relativo, utilizzare la proprietà anziché la proprietà .
<PropertyGroup>
<DefaultItemExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/myprefix*/**</DefaultItemExcludesInProjectFolder>
</PropertyGroup>
EnableDefaultItems
La proprietà controlla se gli elementi di compilazione, gli elementi delle risorse incorporati e gli elementi vengono inclusi in modo implicito nel progetto. Il valore predefinito è . Impostare la proprietà su per disabilitare tutta l'inclusione implicita dei file.
<PropertyGroup>
<EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>
EnableDefaultCompileItems
La proprietà controlla se gli elementi di compilazione vengono inclusi in modo implicito nel progetto. Il valore predefinito è . Impostare la proprietà su per disabilitare l'inclusione implicita di *.cs e altri file di estensione del linguaggio.
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
EnableDefaultEmbeddedResourceItems
La proprietà controlla se gli elementi delle risorse incorporati vengono inclusi in modo implicito nel progetto. Il valore predefinito è . Impostare la proprietà su per disabilitare l'inclusione implicita dei file di risorse incorporati.
<PropertyGroup>
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>
EnableDefaultNoneItems
La proprietà controlla se gli elementi (file che non hanno alcun ruolo nel processo di compilazione) vengono inclusi in modo implicito nel progetto. Il valore predefinito è . Impostare la proprietà su per disabilitare l'inclusione implicita degli elementi .
<PropertyGroup>
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>
Proprietà di analisi del codice
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- AnalysisLevel
- Categoria AnalysisLevel
- AnalysisMode
- Categoria AnalysisMode
- CodeAnalysisTreatWarningsAsErrors
- EnableNETAnalyzers
- EnforceCodeStyleInBuild
- _SkipUpgradeNetAnalyzersNuGetWarning
AnalysisLevel
La proprietà AnalysisLevel consente di specificare un set di analizzatori di codice da eseguire in base a una versione .NET. Ogni versione .NET include un set di regole di analisi del codice. Di tale set, le regole abilitate per impostazione predefinita per tale versione analizzano il codice. Ad esempio, se si esegue l'aggiornamento da .NET 8 a .NET 9, ma non si vuole modificare il set predefinito di regole di analisi del codice, impostare AnalysisLevel su 8.
<PropertyGroup>
<AnalysisLevel>8</AnalysisLevel>
</PropertyGroup>
Facoltativamente, è possibile specificare un valore composto per questa proprietà che specifica anche l'aggressività per abilitare le regole. I valori composti prendono il formato , dove il valore è uno dei valori AnalysisMode. Nell'esempio seguente viene usata la versione degli analizzatori del codice e viene abilitato il set di regole.
<PropertyGroup>
<AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>
Valore predefinito:
- Se il progetto è destinato .NET 5 o versione successiva o se è stata aggiunta la proprietà AnalysisMode, il valore predefinito è
latest. - In caso contrario, questa proprietà viene omessa a meno che non venga aggiunta in modo esplicito al file di progetto.
Nella tabella seguente vengono illustrati i valori che è possibile specificare.
| Value | Meaning |
|---|---|
latest |
Vengono usati gli analizzatori di codice più recenti rilasciati. Si tratta dell'impostazione predefinita. |
latest-<mode> |
Vengono usati gli analizzatori di codice più recenti rilasciati. Il valore determina quali regole sono abilitate. |
preview |
Vengono usati gli analizzatori di codice più recenti, anche se sono in anteprima. |
preview-<mode> |
Vengono usati gli analizzatori di codice più recenti, anche se sono in anteprima. Il valore determina quali regole sono abilitate. |
10.0 |
Viene usato il set di regole disponibili per la versione .NET 10, anche se sono disponibili regole più recenti. |
10.0-<mode> |
Viene usato il set di regole disponibili per la versione .NET 10, anche se sono disponibili regole più recenti. Il valore determina quali regole sono abilitate. |
10 |
Viene usato il set di regole disponibili per la versione .NET 10, anche se sono disponibili regole più recenti. |
10-<mode> |
Viene usato il set di regole disponibili per la versione .NET 10, anche se sono disponibili regole più recenti. Il valore determina quali regole sono abilitate. |
9.0 |
Viene usato il set di regole disponibili per la versione .NET 9, anche se sono disponibili regole più recenti. |
9.0-<mode> |
Viene usato il set di regole disponibili per la versione .NET 9, anche se sono disponibili regole più recenti. Il valore determina quali regole sono abilitate. |
9 |
Viene usato il set di regole disponibili per la versione .NET 9, anche se sono disponibili regole più recenti. |
9-<mode> |
Viene usato il set di regole disponibili per la versione .NET 9, anche se sono disponibili regole più recenti. Il valore determina quali regole sono abilitate. |
8.0 |
Viene usato il set di regole disponibili per la versione .NET 8, anche se sono disponibili regole più recenti. |
8.0-<mode> |
Viene usato il set di regole disponibili per la versione .NET 8, anche se sono disponibili regole più recenti. Il valore determina quali regole sono abilitate. |
8 |
Viene usato il set di regole disponibili per la versione .NET 8, anche se sono disponibili regole più recenti. |
8-<mode> |
Viene usato il set di regole disponibili per la versione .NET 8, anche se sono disponibili regole più recenti. Il valore determina quali regole sono abilitate. |
Note
- Se si imposta EnforceCodeStyleInBuild su , questa proprietà influisce sulle regole di tipo codice (IDEXXXX), oltre alle regole di qualità del codice.
- Se si imposta un valore composto per , non è necessario specificare un AnalysisMode. Tuttavia, se si esegue questa operazione, ha la precedenza su .
- Questa proprietà non ha alcun effetto sull'analisi del codice nei progetti che non fanno riferimento a un project SDK, ad esempio, progetti legacy .NET Framework che fanno riferimento al pacchetto NuGet Microsoft.CodeAnalysis.NetAnalyzers. Per altre informazioni, vedere Abilitare l'analisi del codice nei progetti legacy.
Categoria AnalysisLevel
Questa proprietà è identica a AnalysisLevel, ad eccezione del fatto che si applica solo a una categoria specifica di regole di analisi del codice. Questa proprietà consente di usare una versione diversa degli analizzatori di codice per una categoria specifica o di abilitare o disabilitare regole a un livello diverso rispetto alle altre categorie di regole. Se si omette questa proprietà per una determinata categoria di regole, per impostazione predefinita viene impostato il valore AnalysisLevel. I valori disponibili sono uguali a quelli di AnalysisLevel.
<PropertyGroup>
<AnalysisLevelSecurity>preview</AnalysisLevelSecurity>
</PropertyGroup>
<PropertyGroup>
<AnalysisLevelSecurity>preview-recommended</AnalysisLevelSecurity>
</PropertyGroup>
La tabella seguente elenca il nome della proprietà per ogni categoria di regole.
| Nome proprietà | Categoria di regole |
|---|---|
<AnalysisLevelDesign> |
Regole di progettazione |
<AnalysisLevelDocumentation> |
Regole della documentazione |
<AnalysisLevelGlobalization> |
Regole di globalizzazione |
<AnalysisLevelInteroperability> |
Regole di portabilità e interoperabilità |
<AnalysisLevelMaintainability> |
Regole di gestibilità |
<AnalysisLevelNaming> |
Regole di denominazione |
<AnalysisLevelPerformance> |
Regole di prestazioni |
<AnalysisLevelSingleFile> |
Regole dell'applicazione a file singolo |
<AnalysisLevelReliability> |
Regole di affidabilità |
<AnalysisLevelSecurity> |
Regole di sicurezza |
<AnalysisLevelStyle> |
Regole di tipo codice (IDEXXXX) |
<AnalysisLevelUsage> |
Regole di utilizzo |
AnalysisMode
L'SDK .NET viene fornito con tutte le regole di qualità del codice "CA. Per impostazione predefinita, solo le regole some sono abilitate come avvisi di compilazione in ogni versione .NET. La proprietà consente di personalizzare il set di regole abilitate per impostazione predefinita. È possibile passare a una modalità di analisi più aggressiva in cui è possibile rifiutare esplicitamente le regole singolarmente o una modalità di analisi più conservativa in cui è possibile acconsentire esplicitamente a regole specifiche. Ad esempio, se si desidera abilitare tutte le regole come avvisi di compilazione, impostare il valore su .
<PropertyGroup>
<AnalysisMode>All</AnalysisMode>
</PropertyGroup>
Nella tabella seguente vengono illustrati i valori delle opzioni disponibili. Sono elencati in ordine crescente del numero di regole abilitate.
| Value | Description |
|---|---|
None |
Tutte le regole sono disabilitate. È possibile acconsentire in modo selettivo alle singole regole per abilitarle. |
Default |
Modalità predefinita, in cui alcune regole sono abilitate come avvisi di compilazione, alcune regole vengono abilitate come suggerimenti IDE di Visual Studio e il resto sono disabilitati. |
Minimum |
Modalità più aggressiva rispetto alla modalità . Alcuni suggerimenti consigliati per l'imposizione della compilazione sono abilitati come avvisi di compilazione. Per vedere quali regole sono incluse, esaminare il %ProgramFiles%/do tnet/sdk/[version]/Sdks/Microsoft.NET. File sdk/analyzers/build/config/analysislevel_[level]_minimum.globalconfig. Per .NET 7 e versioni precedenti, l'estensione del file è .editorconfig. |
Recommended |
Modalità più aggressiva rispetto alla modalità , in cui sono abilitate più regole come avvisi di compilazione. Per vedere quali regole sono incluse, esaminare il %ProgramFiles%/do tnet/sdk/[version]/Sdks/Microsoft.NET. File sdk/analyzers/build/config/analysislevel_[level]_recommended.globalconfig. Per .NET 7 e versioni precedenti, l'estensione del file è .editorconfig. |
All |
Tutte le regole vengono abilitate come avvisi di compilazione. È possibile rifiutare esplicitamente le singole regole per disabilitarle. * Le regole seguenti non sono abilitate impostando su o impostando su : CA1017, CA1045, CA1005, CA1014, CA1060, CA1021 e le regole dell'analizzatore delle metriche del codice (CA1501, CA1502, CA1505, CA1506 e CA1509). Queste regole legacy potrebbero essere deprecate in una versione futura. Tuttavia, è comunque possibile abilitarle singolarmente usando una voce . |
Note
- Se si imposta EnforceCodeStyleInBuild su , questa proprietà influisce sulle regole di tipo codice (IDEXXXX), oltre alle regole di qualità del codice.
- Se si usa un valore composto per AnalysisLevel, ad esempio, , è possibile omettere completamente questa proprietà. Tuttavia, se si specificano entrambe le proprietà, ha la precedenza su .
Categoria AnalysisMode
Questa proprietà è identica a AnalysisMode, ad eccezione del fatto che si applica solo a una categoria specifica di regole di analisi del codice. Questa proprietà consente di abilitare o disabilitare regole a un livello diverso rispetto alle altre categorie di regole. Se si omette questa proprietà per una determinata categoria di regole, per impostazione predefinita viene impostato il valore AnalysisMode. I valori disponibili sono uguali a quelli di AnalysisMode.
<PropertyGroup>
<AnalysisModeSecurity>All</AnalysisModeSecurity>
</PropertyGroup>
La tabella seguente elenca il nome della proprietà per ogni categoria di regole.
| Nome proprietà | Categoria di regole |
|---|---|
<AnalysisModeDesign> |
Regole di progettazione |
<AnalysisModeDocumentation> |
Regole della documentazione |
<AnalysisModeGlobalization> |
Regole di globalizzazione |
<AnalysisModeInteroperability> |
Regole di portabilità e interoperabilità |
<AnalysisModeMaintainability> |
Regole di gestibilità |
<AnalysisModeNaming> |
Regole di denominazione |
<AnalysisModePerformance> |
Regole di prestazioni |
<AnalysisModeSingleFile> |
Regole dell'applicazione a file singolo |
<AnalysisModeReliability> |
Regole di affidabilità |
<AnalysisModeSecurity> |
Regole di sicurezza |
<AnalysisModeStyle> |
Regole di tipo codice (IDEXXXX) |
<AnalysisModeUsage> |
Regole di utilizzo |
CodeAnalysisTreatWarningsAsErrors
La proprietà consente di configurare se gli avvisi di analisi della qualità del codice (CAxxxx) devono essere considerati come avvisi e interrompere la compilazione. Se si usa il flag -warnaserror durante la compilazione dei progetti, .NET'analisi della qualità del codice gli avvisi vengono considerati anche come errori. Se non si desidera che gli avvisi di analisi della qualità del codice vengano considerati come errori, è possibile impostare la proprietà MSBuild su nel file di progetto.
<PropertyGroup>
<CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>
EnableNETAnalyzers
.NET'analisi della qualità del codice è abilitata per impostazione predefinita per i progetti destinati .NET 5 o versione successiva. Se si usa .NET 5+ SDK, è possibile abilitare l'analisi del codice .NET per i progetti in stile SDK destinati a versioni precedenti di .NET impostando la proprietà EnableNETAnalyzers su true. Per disabilitare l'analisi del codice in qualsiasi progetto, impostare questa proprietà su .
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>
Note
Questa proprietà si applica in modo specifico agli analizzatori predefiniti in .NET 5+ SDK. Non deve essere usata quando si installa un pacchetto di analisi del codice NuGet.
EnforceCodeStyleInBuild
.NET'analisi dello stile del codice è disabilitata, per impostazione predefinita, in caso di compilazione per tutti i progetti .NET. È possibile abilitare l'analisi dello stile di codice per i progetti di .NET impostando la proprietà EnforceCodeStyleInBuild su true.
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
Tutte le regole di stile del codice configurate come avvisi o errori verranno eseguite in caso di violazioni della compilazione e del report.
_SkipUpgradeNetAnalyzersNuGetWarning
La proprietà _SkipUpgradeNetAnalyzersNuGetWarning consente di configurare se viene visualizzato un avviso se si usano analizzatori di codice da un pacchetto NuGet non aggiornato rispetto agli analizzatori di codice nell'SDK di .NET più recente. L'avviso è simile al seguente:
L'SDK di .NET include analizzatori più recenti con la versione '6.0.0' rispetto alla versione '5.0.3' del pacchetto 'Microsoft.CodeAnalysis.NetAnalyzers'. Aggiornare o rimuovere questo riferimento al pacchetto.
Per rimuovere questo avviso e continuare a usare la versione degli analizzatori di codice nel pacchetto NuGet, impostare su nel file di progetto.
<PropertyGroup>
<_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning>
</PropertyGroup>
Proprietà di configurazione di esecuzione
È possibile configurare alcuni comportamenti di runtime specificando le proprietà di MSBuild nel file di progetto dell'app. Per informazioni su altri modi per configurare il comportamento di runtime, vedere Impostazioni configurazione di esecuzione.
- AutoreleasePoolSupport
- ConcurrentGarbageCollection
- InvariantGlobalization
- PredefinedCulturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- TieredCompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
- TieredPGO
- UseWindowsThreadPool
AutoreleasePoolSupport
La proprietà configura se ogni thread gestito riceve un NSAutoreleasePool implicito durante l'esecuzione in una piattaforma macOS supportata. Per altre informazioni, vedere per i thread gestiti.
<PropertyGroup>
<AutoreleasePoolSupport>true</AutoreleasePoolSupport>
</PropertyGroup>
ConcurrentGarbageCollection
La proprietà consente di configurare se è abilitato Garbage Collection in background (simultaneo). Impostare il valore su per disabilitare l'operazione di Garbage Collection in background. Per altre informazioni, vedere GC in background.
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>
InvariantGlobalization
La proprietà consente di configurare se l'app viene eseguita in modalità invariante di globalizzazione, il che significa che non ha accesso a dati specifici delle impostazioni cultura. Impostare il valore su per l'esecuzione in modalità invariante di globalizzazione. Per altre informazioni, vedere Modalità invariante.
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
PredefinedCulturesOnly
In .NET 6 e versioni successive, la proprietà PredefinedCulturesOnly configura se le app possono creare impostazioni cultura diverse dalle impostazioni cultura invarianti quando modalità invariante. Il valore predefinito è . Impostare il valore su per consentire la creazione di nuove impostazioni cultura in modalità invariante di globalizzazione.
<PropertyGroup>
<PredefinedCulturesOnly>false</PredefinedCulturesOnly>
</PropertyGroup>
Per altre informazioni, vedere Creazione delle impostazioni cultura e mapping dei casi in modalità invariante di globalizzazione.
RetainVMGarbageCollection
La proprietà configura il Garbage Collector per inserire segmenti di memoria eliminati in un elenco di standby per usarli o rilasciarli in futuro. L'impostazione del valore su indica al Garbage Collector di inserire i segmenti in un elenco di standby. Per altre informazioni, vedere Conservare la macchina virtuale.
<PropertyGroup>
<RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>
ServerGarbageCollection
La proprietà consente di configurare se l'applicazione usa Garbage Collection della workstation o Garbage Collection del server. Impostare il valore su per usare l'operazione di Garbage Collection del server. Per altre informazioni, vedere Workstation vs. server.
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
ThreadPoolMaxThreads
La proprietà configura il numero massimo di thread per il pool di thread di lavoro. Per altre informazioni, vedere Numero massimo di thread.
<PropertyGroup>
<ThreadPoolMaxThreads>20</ThreadPoolMaxThreads>
</PropertyGroup>
ThreadPoolMinThreads
La proprietà configura il numero minimo di thread per il pool di thread di lavoro. Per altre informazioni, vedere Thread minimi.
<PropertyGroup>
<ThreadPoolMinThreads>4</ThreadPoolMinThreads>
</PropertyGroup>
TieredCompilation
La proprietà configura se il compilatore JIT (Just-In-Time) utilizza compilazione a livelli. Impostare il valore su per disabilitare la compilazione a livelli. Per altre informazioni, vedere Compilazione a livelli.
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
TieredCompilationQuickJit
La proprietà consente di configurare se il compilatore JIT usa il quick JIT. Impostare il valore su per disabilitare quick JIT. Per altre informazioni, vedere Quick JIT.
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
TieredCompilationQuickJitForLoops
La proprietà consente di configurare se il compilatore JIT usa il quick JIT nei metodi che contengono cicli. Impostare il valore su per abilitare il quick JIT sui metodi che contengono cicli. Per altre informazioni, vedere Quick JIT for loops (JIT rapido per i cicli).
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
TieredPGO
La proprietà controlla se è abilitata la Profile Guided Optmization (PGO) dinamica o a livelli. Impostare il valore su per abilitare laPGO a livelli. Per altre informazioni, vedere la Profile Guided Optmization.
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
UseWindowsThreadPool
La proprietà UseWindowsThreadPool configura se la gestione dei thread del pool di thread è delegata al pool di thread Windows (solo Windows). Il valore predefinito è false, nel qual caso viene usato il pool di thread .NET. Per altre informazioni, vedere Windows pool di thread.
<PropertyGroup>
<UseWindowsThreadPool>true</UseWindowsThreadPool>
</PropertyGroup>
Proprietà correlate al riferimento
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- AssetTargetFallback
- DisableImplicitFrameworkReferences
- DisableTransitiveFrameworkReferenceDownloads
- DisableTransitiveProjectReferences
- ManagePackageVersionsCentrally
- Proprietà correlate al ripristino
- UseMauiEssentials
- ValidateExecutableReferencesMatchSelfContained
AssetTargetFallback
La proprietà consente di specificare versioni del framework compatibili aggiuntive per i riferimenti al progetto e i pacchetti NuGet. Ad esempio, se si specifica una dipendenza del pacchetto usando ma tale pacchetto non contiene asset compatibili con dei progetti, la proprietà entra in gioco. La compatibilità del pacchetto a cui si fa riferimento viene ricontrollata usando ogni framework di destinazione specificato in . Questa proprietà sostituisce la proprietà deprecata.
È possibile impostare la proprietà su una o più versioni del framework di destinazione.
<PropertyGroup>
<AssetTargetFallback>net461</AssetTargetFallback>
</PropertyGroup>
DisableImplicitFrameworkReferences
La proprietà DisableImplicitFrameworkReferences controlla gli elementi impliciti FrameworkReference quando la destinazione è .NET Core 3.0 e versioni successive. Quando la destinazione è .NET Core 2.1 o .NET Standard 2.0 e versioni precedenti, controlla gli elementi impliciti PackageReference ai pacchetti in un metapacchetto. Un metapacchetto è un pacchetto basato su framework costituito solo da dipendenze da altri pacchetti. Questa proprietà controlla anche riferimenti impliciti, ad esempio System e System.Core quando la destinazione è .NET Framework.
Impostare questa proprietà su per disabilitare gli elementi FrameworkReference impliciti o PackageReference. Se si imposta questa proprietà su , è possibile aggiungere riferimenti espliciti solo ai framework o ai pacchetti necessari.
<PropertyGroup>
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
</PropertyGroup>
DisableTransitiveFrameworkReferenceDownloads
Impostare la proprietà su per evitare di scaricare pacchetti aggiuntivi di runtime e targeting a cui non fa riferimento direttamente il progetto.
<PropertyGroup>
<DisableTransitiveFrameworkReferenceDownloads>true</DisableTransitiveFrameworkReferenceDownloads>
</PropertyGroup>
DisableTransitiveProjectReferences
La proprietà controlla i riferimenti impliciti relativi al progetto. Impostare questa proprietà su per disabilitare gli elementi impliciti. La disabilitazione dei riferimenti impliciti al progetto comporta un comportamento non transitivo simile al sistema di progetto legacy.
Quando questa proprietà è , ha un effetto simile a quello dell'impostazione su tutte le dipendenze del progetto di dipendenza.
Se si imposta questa proprietà su , è possibile aggiungere riferimenti espliciti solo ai progetti necessari.
<PropertyGroup>
<DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>
ManagePackageVersionsCentrally
La proprietà ManagePackageVersionsCentrally è stata introdotta in .NET 7. Impostandola su in un file Directory.Packages.props nella radice del repository, è possibile gestire le dipendenze comuni nei progetti da un'unica posizione. Aggiungere versioni per le dipendenze dei pacchetti comuni usando gli elementi nel file Directory.Packages.props. Quindi, nei singoli file di progetto, è possibile omettere gli attributi da tutti gli elementi che fanno riferimento a pacchetti gestiti centralmente.
File di esempio Directory.Packages.props:
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
...
<ItemGroup>
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
</ItemGroup>
File di progetto singolo:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" />
</ItemGroup>
Per altre informazioni, vedere Central Package Management (CPM).
Proprietà correlate al ripristino
Il ripristino di un pacchetto a cui si fa riferimento installa tutte le relative dipendenze dirette e tutte le dipendenze di tali dipendenze. È possibile personalizzare il ripristino dei pacchetti specificando proprietà come e . Per altre informazioni su queste e altre proprietà, vedere Destinazione di ripristino.
<PropertyGroup>
<RestoreIgnoreFailedSource>true</RestoreIgnoreFailedSource>
</PropertyGroup>
UseMauiEssentials
Impostare la proprietà su per dichiarare un riferimento esplicito a un progetto o a un pacchetto che dipende da MAUI Essentials. Questa impostazione garantisce che il progetto esegue il pulling del riferimento al framework noto corretto per MAUI Essentials. Se il progetto fa riferimento a un progetto che usa MAUI Essentials ma non si imposta questa proprietà su , è possibile che venga visualizzato un avviso di compilazione .
<PropertyGroup>
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
ValidateExecutableReferencesMatchSelfContained
La proprietà può essere utilizzata per disabilitare gli errori correlati ai riferimenti al progetto eseguibile. Se .NET rileva che un progetto eseguibile autonomo fa riferimento a un progetto eseguibile dipendente dal framework o viceversa, genera errori rispettivamente NETSDK1150 e NETSDK1151. Per evitare questi errori quando il riferimento è intenzionale, impostare la proprietà su .
<PropertyGroup>
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
</PropertyGroup>
WindowsSdkPackageVersion
La proprietà WindowsSdkPackageVersion può essere usata per eseguire l'override della versione del pacchetto di destinazione Windows SDK. Questa proprietà è stata introdotta in .NET 5 e sostituisce l'uso dell'elemento FrameworkReference a questo scopo.
<PropertyGroup>
<WindowsSdkPackageVersion>10.0.19041.18</WindowsSdkPackageVersion>
</PropertyGroup>
Note
Non è consigliabile eseguire l'override della versione Windows SDK, perché i pacchetti di destinazione Windows SDK sono inclusi nell'SDK .NET 5+. Al contrario, per fare riferimento al pacchetto SDK di Windows più recente, aggiornare la versione di .NET SDK. Questa proprietà deve essere usata solo in rari casi, ad esempio l'uso di pacchetti di anteprima o la necessità di eseguire l'override della versione di C#/WinRT.
Proprietà correlate all'esecuzione
Per avviare un'app con il comando vengono usate le proprietà seguenti:
- RunArguments
- RunWorkingDirectory
RunArguments
La proprietà definisce gli argomenti passati all'app quando viene eseguita.
<PropertyGroup>
<RunArguments>-mode dryrun</RunArguments>
</PropertyGroup>
Tip
È possibile specificare argomenti aggiuntivi da passare all'app usando l'opzione per .
RunWorkingDirectory
La proprietà definisce la directory di lavoro in cui avviare il processo dell'applicazione. Può essere un percorso assoluto o un percorso relativo alla directory del progetto. Se non si specifica una directory, viene usata come directory di lavoro.
<PropertyGroup>
<RunWorkingDirectory>c:\temp</RunWorkingDirectory>
</PropertyGroup>
Proprietà correlate all'SDK
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- SdkAnalysisLevel
SdkAnalysisLevel
Introdotta in .NET 9, la proprietà SdkAnalysisLevel può essere usata per configurare il modo in cui è strict SDK tooling. Consente di gestire i livelli di avviso dell'SDK in situazioni in cui potrebbe non essere possibile aggiungere SDK tramite global.json o altri mezzi. È possibile usare questa proprietà per indicare a un SDK più recente di comportarsi come se fosse un SDK precedente, per quanto riguarda uno strumento o una funzionalità specifica, senza dover installare l'SDK precedente.
I valori consentiti di questa proprietà sono bande di funzionalità SDK, ad esempio 8.0.100 e 8.0.400. Il valore predefinito è il gruppo di funzionalità SDK dell'SDK in esecuzione. Ad esempio, per SDK 9.0.102, il valore da usare è 9.0.100. Per informazioni sulla versione dell'SDK di .NET, vedere Come .NET viene eseguito il controllo delle versioni).
<PropertyGroup>
<SdkAnalysisLevel>8.0.400</SdkAnalysisLevel>
</PropertyGroup>
Per altre informazioni, vedere SDK Analysis Level Property and Usage.For more information, see SDK Analysis Level Property and Usage.
La tabella seguente riepiloga la diagnostica e i comportamenti interessati da .
| SDKAnalysisLevel | Description | Comportamento aggiornato |
|---|---|---|
| 9.0.100 | Ripristinare la diagnostica delle origini HTTP | Genera un errore NU1302 anziché un avviso NU1803 . |
| 10.0.100 | Eliminazione del pacchetto 'Restore' | PrunePackageReference è abilitato per impostazione predefinita per i progetti destinati .NET 8+ o .NET Standard 2.0+. |
| 10.0.100 | Sistema di risoluzione 'Restore' con file di blocco | Usa il resolver del grafo delle dipendenze migliorato .NET 9 anziché il resolver del grafo delle dipendenze legacy (.NET 8 SDK e versioni precedenti). |
| 10.0.100 | Comportamento 'Restore' per PackageReference senza una versione | Genera un errore NU1015 anziché un avviso NU1603 . |
Note
Il comportamento abilitato dal valore esce (scade) dopo tre versioni principali. Ad esempio, la versione 11.0.100 rispetta solo i valori fino a 8.0.100. Nella versione 12.0.100, le funzionalità che potrebbero, nelle versioni precedenti, essere disabilitate impostando il valore 8.0.100 non verranno più disabilitate.
Proprietà correlate a Microsoft.Testing.Platform
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- IsTestingPlatformApplication
- Enable[NugetPackageNameWithoutDots]
- EnableAspireTesting
- EnableMSTestRunner
- EnableNUnitRunner
- EnablePlaywright
- GenerateTestingPlatformConfigurationFile
- GenerateTestingPlatformEntryPoint
- TestingExtensionsProfile
- TestingPlatformCaptureOutput
- TestingPlatformCommandLineArguments
- TestingPlatformDotnetTestSupport
- TestingPlatformShowTestsFailure
- UseMicrosoftTestingPlatformRunner
IsTestingPlatformApplication
Quando il progetto fa riferimento al pacchetto Microsoft.Testing.Platform.MSBuild , impostando su (che è anche il valore predefinito se non specificato) esegue le operazioni seguenti:
- Genera il punto di ingresso al progetto di test.
- Genera il file di configurazione.
- Rileva le estensioni.
L'impostazione della proprietà su disabilita la dipendenza transitiva per il pacchetto. Una dipendenza transitiva è quando un progetto che fa riferimento a un altro progetto che fa riferimento a un determinato pacchetto si comporta come se fa riferimento al pacchetto. Questa proprietà viene in genere impostata su in un progetto non di test che fa riferimento a un progetto di test. Per altre informazioni, vedere errore CS8892.
Se il progetto di test fa riferimento a MSTest, NUnit o xUnit, questa proprietà viene impostata sullo stesso valore di EnableMSTestRunner, EnableNUnitRunner o (per xUnit).
Enable[NugetPackageNameWithoutDots]
Usare una proprietà con il modello per abilitare o disabilitare le estensioni Microsoft.Testing.Platform.
Ad esempio, per abilitare l'estensione del dump di arresto anomalo del sistema (pacchetto NuGet Microsoft.Testing.Extensions.CrashDump), impostare su .
Per altre informazioni, vedere Abilitare o disabilitare le estensioni.
EnableAspireTesting
Quando si usa MSTest project SDK, è possibile usare la proprietà per inserire tutte le dipendenze e le direttive predefinite necessarie per il test con e . Questa proprietà è disponibile in MSTest 3.4 e versioni successive.
Per altre informazioni, vedere Test with Aspira.
EnablePlaywright
Quando si usa MSTest project SDK, è possibile usare la proprietà per inserire tutte le dipendenze e le direttive predefinite necessarie per il test con e . Questa proprietà è disponibile in MSTest 3.4 e versioni successive.
Per altre informazioni, vedere Playwright.
EnableMSTestRunner
La proprietà abilita o disabilita l'uso di Microsoft.Testing.Platform (MTP), un'alternativa leggera e portabile a VSTest. Questa proprietà è disponibile in MSTest 3.2 e versioni successive.
Note
Se il progetto specifica MSTest SDK, non è necessario impostare questa proprietà. Viene impostato automaticamente.
EnableNUnitRunner
La proprietà abilita o disabilita l'uso dello strumento di esecuzione NUnit. Lo strumento di esecuzione NUnit è un'alternativa leggera e portabile a VSTest. Questa proprietà è disponibile in NUnit3TestAdapter nella versione 5.0 e successive.
UseMicrosoftTestingPlatformRunner
La proprietà abilita o disabilita l'uso dello strumento di esecuzione Microsoft.Testing.Platform nei progetti di test xUnit.v3 .
GenerateTestingPlatformEntryPoint
L'impostazione della proprietà su disabilita la generazione automatica del punto di ingresso del programma nei progetti di test che usano Microsoft.Testing.Platform. È possibile impostare questa proprietà su quando si definisce manualmente un punto di ingresso o quando si fa riferimento a un progetto di test da un eseguibile che dispone anche di un punto di ingresso.
Per altre informazioni, vedere errore CS8892.
Per controllare la generazione del punto di ingresso in un progetto VSTest, usare la proprietà .
GenerateTestingPlatformConfigurationFile
La proprietà è disponibile solo quando IsTestingPlatformApplication è . Viene usato per consentire la copia e la ridenominazione del file di configurazione nella cartella di output.
TestingPlatformCaptureOutput
La proprietà controlla se tutti gli output della console scritti da un eseguibile di test vengono acquisiti e nascosti all'utente quando si usano per eseguire i test. Per impostazione predefinita, l'output della console è nascosto. Questo output include il banner, le informazioni sulla versione e le informazioni sul test formattato. Impostare questa proprietà su per visualizzare queste informazioni insieme all'output di MSBuild.
Per altre informazioni, vedere Visualizzare l'output completo della piattaforma.
TestingPlatformCommandLineArguments
La proprietà consente di specificare gli argomenti della riga di comando per l'app di test quando si usano per eseguire i test. Il frammento di file di progetto seguente illustra un esempio.
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
TestingPlatformDotnetTestSupport
La proprietà abilita il test delle app Microsoft.Testing.Platform quando si usa la modalità VSTest di .
Note
Non chiamare su una soluzione con progetti VSTest e Microsoft.Testing.Platform, in quanto tale scenario non è supportato.
Per altre informazioni, vedere Test con "dotnet test".
TestingPlatformShowTestsFailure
La proprietà consente di controllare se viene segnalato un singolo errore o tutti gli errori in un test non superato quando si usano per eseguire i test. Per impostazione predefinita, gli errori di test vengono riepilogati in un file .log e un singolo errore per progetto di test viene segnalato a MSBuild. Per visualizzare gli errori per ogni test non riuscito, impostare questa proprietà su nel file di progetto.
TestingExtensionsProfile
Quando si usa MSTest project SDK, la proprietà consente di selezionare un profilo da usare. Nella tabella seguente vengono illustrati i valori consentiti.
| Value | Description |
|---|---|
Default |
Abilita le estensioni consigliate per questa versione di MSTest.SDK. |
None |
Non sono abilitate estensioni. |
AllMicrosoft |
Abilitare tutte le estensioni fornite da Microsoft (incluse le estensioni con una licenza restrittiva). |
Per altre informazioni, vedere profilo Microsoft.Testing.Platform.
Proprietà correlate a VSTest
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- IsTestProject
- UseVSTest
IsTestProject
La proprietà IsTestProject è impostata su true dal Microsoft.NET. Pacchetto NuGet Test.Sdk. Indica se un progetto è un progetto di test VSTest in modo che venga riconosciuto da .
Note
Se il progetto specifica il MSTest SDK, non è necessario impostare questa proprietà, perché MSTest.Sdk fa riferimento a Microsoft.NET. Pacchetto NuGet Test.Sdk.
UseVSTest
Impostare la proprietà su per passare da Microsoft.Testing.Platform allo strumento di esecuzione VSTest quando si usa l'SDK del progetto MSTest .
Proprietà correlate a MSTest
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- MSTestAnalysisMode
MSTestAnalysisMode
Questa proprietà determina quali analizzatori sono abilitati con la gravità. Per altre informazioni, vedere 'analisi del codice MSTest.
Proprietà correlate all'hosting
Le proprietà MSBuild seguenti sono documentate in questa sezione:
- AppHostDotNetSearch
- AppHostRelativeDotNet
- EnableComHosting
- EnableDynamicLoading
AppHostDotNetSearch
La proprietà AppHostDotNetSearch configura come il file eseguibile nativo generato per un'applicazione cercherà un'installazione .NET. Questa proprietà influisce solo sul file eseguibile generato durante la pubblicazione, non sulla compilazione.
<PropertyGroup>
<AppHostDotNetSearch>Global</AppHostDotNetSearch>
</PropertyGroup>
Nella tabella seguente sono elencati i valori validi. È possibile specificare più valori, separati da punti e virgola.
| Value | Meaning |
|---|---|
AppLocal |
Cartella dell'eseguibile dell'app |
AppRelative |
Percorso relativo all'eseguibile dell'app come specificato da AppHostRelativeDotNet |
EnvironmentVariable |
Valore delle variabili di ambiente |
Global |
Percorsi di installazione globali registrati e predefiniti |
Questa proprietà è stata introdotta in .NET 9.
AppHostRelativeDotNet
La proprietà AppHostRelativeDotNet consente di specificare un percorso relativo per l'eseguibile dell'app per cercare l'installazione .NET quando è configurata per farlo. L'impostazione della proprietà implica che è . Questa proprietà influisce solo sul file eseguibile generato durante la pubblicazione, non sulla compilazione.
<PropertyGroup>
<AppHostRelativeDotNet>./relative/path/to/runtime</AppHostRelativeDotNet>
</PropertyGroup>
Questa proprietà è stata introdotta in .NET 9.
EnableComHosting
La proprietà indica che un assembly fornisce un server COM. L'impostazione di su implica anche che EnableDynamicLoading sia .
<PropertyGroup>
<EnableComHosting>True</EnableComHosting>
</PropertyGroup>
Per altre informazioni, vedere componenti Expose .NET a COM.
EnableDynamicLoading
La proprietà indica che un assembly è un componente caricato dinamicamente. Il componente può essere una libreria COM o una libreria non COM che può essere usata da un host nativo o usato come plug-in. L'impostazione di questa proprietà su ha gli effetti seguenti:
- Viene generato un file .runtimeconfig.json.
- RollForward è impostato su .
- I riferimenti NuGet vengono copiati in locale.
<PropertyGroup>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
Proprietà del file generato
Le proprietà seguenti riguardano il codice nei file generati:
- DisableImplicitNamespaceImports
- ImplicitUsings
DisableImplicitNamespaceImports
La proprietà DisableImplicitNamespaceImports può essere usata per disabilitare le importazioni implicite di spazi dei nomi nei progetti Visual Basic destinati .NET 6 o versione successiva. Gli spazi dei nomi impliciti sono gli spazi dei nomi predefiniti importati a livello globale in un progetto di Visual Basic. Impostare questa proprietà su per disabilitare le importazioni implicite di spazi dei nomi.
<PropertyGroup>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>
ImplicitUsings
La proprietà ImplicitUsings può essere usata per abilitare e disabilitare direttive implicite global using nei progetti C# destinati a .NET 6 o versione successiva e C# 10 o versione successiva. Quando la funzionalità è abilitata, .NET SDK aggiunge direttive global using per un set di spazi dei nomi predefiniti in base al tipo di SDK del progetto. Impostare questa proprietà su o per abilitare le direttive implicite . Per disabilitare le direttive implicite , rimuovere la proprietà o impostarla su o .
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Note
I modelli per i nuovi progetti C# destinati .NET 6 o versioni successive hanno ImplicitUsings impostato su enable per impostazione predefinita.
Per definire una direttiva esplicita, aggiungere un elemento Using.
Items
Gli elementi MSBuild sono input nel sistema di compilazione. Gli elementi vengono specificati in base al tipo, ovvero il nome dell'elemento. Ad esempio, e sono due tipi di elemento comuni. I tipi di elemento aggiuntivi seguenti vengono resi disponibili dall'SDK di .NET:
- AssemblyMetadata
- InternalsVisibleTo
- PackageReference
- TrimmerRootAssembly
- Using
È possibile usare qualsiasi attributo di elemento standard, ad esempio, e , in questi elementi. Usare per aggiungere un nuovo elemento e usare per modificare un elemento esistente. Ad esempio, Update viene spesso usato per modificare un elemento aggiunto in modo implicito da .NET SDK.
AssemblyMetadata
L'elemento specifica un attributo assembly della coppia chiave-valore. I metadati diventano la chiave e i metadati diventano il valore.
<ItemGroup>
<AssemblyMetadata Include="Serviceable" Value="True" />
</ItemGroup>
InternalsVisibleTo
L'elemento genera un attributo assembly per l'assembly Friend specificato.
<ItemGroup>
<InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>
Se l'assembly Friend è firmato, è possibile specificare dei metadati facoltativi per specificare la chiave pubblica completa. Se non si specificano i metadati ed è disponibile un , viene usata tale chiave. In caso contrario, all'attributo non viene aggiunta alcuna chiave pubblica.
FrameworkReference
L'elemento FrameworkReference definisce un riferimento a un framework condiviso .NET.
L'attributo specifica l'ID framework.
Il frammento di file di progetto nell'esempio seguente fa riferimento al framework condiviso Microsoft.AspNetCore.App.
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
PackageReference
L'elemento definisce un riferimento a un pacchetto NuGet.
L'attributo specifica l'ID del pacchetto. L'attributo specifica la versione o l'intervallo di versioni. Per informazioni su come specificare una versione minima, una versione massima, un intervallo o una corrispondenza esatta, vedere Intervalli di versioni.
Il frammento di file di progetto nell'esempio seguente fa riferimento al pacchetto System.Runtime.
<ItemGroup>
<PackageReference Include="System.Runtime" Version="4.3.0" />
</ItemGroup>
È anche possibile controllare gli asset di dipendenza usando metadati come .
<ItemGroup>
<PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
Per altre informazioni, vedere i riferimenti ai pacchetti nei file di progetto.
TrimmerRootAssembly
L'elemento consente di escludere un assembly dal taglio. Il taglio è il processo di rimozione di parti inutilizzate del runtime da un'applicazione in un pacchetto. In alcuni casi, il taglio potrebbe rimuovere erroneamente i riferimenti necessari.
L’XML seguente esclude l'assembly dal taglio.
<ItemGroup>
<TrimmerRootAssembly Include="System.Security" />
</ItemGroup>
Per altre informazioni, vedere Opzioni di taglio.
Using
L'elemento consente di includere a livello globale uno spazio dei nomi nel progetto C#, in modo che non sia necessario aggiungere una direttiva per lo spazio dei nomi all'inizio dei file di origine. Questo elemento è simile all'elemento Import che può essere usato per lo stesso scopo nei progetti Visual Basic. Questa proprietà è disponibile a partire da .NET 6.
<ItemGroup>
<Using Include="My.Awesome.Namespace" />
</ItemGroup>
È anche possibile usare l'elemento per definire direttive e globali.
<ItemGroup>
<Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>
Per esempio:
- emette
- emette
Per altre informazioni, vedere direttive con alias e direttive.
Metadati dell'elemento
Oltre agli attributi dell'elemento standard MSBuild, i tag di metadati degli elementi seguenti vengono resi disponibili da .NET SDK:
- CopyToPublishDirectory
- LinkBase
CopyToPublishDirectory
I metadati in un elemento MSBuild controllano quando l'elemento viene copiato nella directory di pubblicazione. Nella tabella seguente vengono illustrati i valori consentiti.
| Value | Description |
|---|---|
PreserveNewest |
Copia l'elemento solo se è stato modificato nel percorso di origine. |
IfDifferent |
Copia l'elemento solo se è stato modificato nel percorso di origine o di destinazione. Questa impostazione è utile per le situazioni in cui è necessario reimpostare le modifiche che si verificano dopo la pubblicazione. |
Always |
Copia sempre l'elemento. |
Never |
Non copia mai l'elemento. |
Dal punto di vista delle prestazioni, è preferibile perché abilita una compilazione incrementale. Evitare di usare e usare , evitando invece scritture di I/O senza alcun effetto.
<ItemGroup>
<None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
LinkBase
Per un elemento esterno alla directory del progetto e alle relative sottodirectory, la destinazione di pubblicazione usa i metadati del collegamento dell'elemento per determinare dove copiare l'elemento.
Link determina anche la modalità di visualizzazione degli elementi all'esterno dell'albero del progetto nella finestra di Esplora soluzioni di Visual Studio.
Se non viene specificato per un elemento esterno al cono del progetto, per impostazione predefinita è . consente di specificare una cartella di base sensibile per gli elementi esterni al cono del progetto. La gerarchia di cartelle nella cartella di base viene mantenuta tramite . Se non viene specificato, viene omesso dal percorso .
<ItemGroup>
<Content Include="..\Extras\**\*.cs" LinkBase="Shared"/>
</ItemGroup>
L'immagine seguente mostra come viene visualizzato un file incluso tramite l'elemento precedente Include GLOB in Esplora soluzioni.
Vedere anche
- Informazioni di riferimento sullo schema di MSBuild
- Proprietà comuni di MSBuild
- Proprietà di MSBuild per il pacchetto NuGet
- Proprietà di MSBuild per il ripristino NuGet
- Personalizzare una compilazione