Informazioni di riferimento su MSBuild per i progetti .NET Desktop SDK
Si tratta page di un riferimento per le proprietà e gli elementi di MSBuild usati per configurare i progetti Windows Form (WinForms) e Windows Presentation Foundation (WPF) con .NET Desktop SDK.
Nota
Questo articolo illustra un subset delle proprietà di MSBuild per .NET SDK in relazione alle app desktop. Per un elenco delle proprietà MSBuild comuni specifiche di .NET SDK, vedere informazioni di riferimento su MSBuild per i progetti .NET SDK. Per un elenco delle proprietà comuni di MSBuild, vedere Proprietà comuni di MSBuild.
Abilitare .NET Desktop SDK
Per usare WinForms o WPF, specificare le impostazioni seguenti nel file di progetto del progetto WinForms o WPF:
- Specificare come destinazione .NET SDK
Microsoft.NET.Sdk
. Per altre informazioni, vedere File di progetto. - Impostare su
TargetFramework
un moniker del framework di destinazione specifico di Windows, ad esempionet8.0-windows
. - Aggiungere una proprietà del framework dell'interfaccia utente (o entrambe, se necessario):
- Impostare
UseWPF
sutrue
per importare e usare WPF. - Impostare
UseWindowsForms
sutrue
per importare e usare WinForms.
- Impostare
- (Facoltativo) Impostare
OutputType
suWinExe
. Questa impostazione produce un'app anziché una libreria. Per produrre una libreria, omettere questa proprietà.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
<!-- and/or -->
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>
L'impostazione predefinita di WPF include ed esclude
I progetti SDK definiscono un set di regole per includere o escludere in modo implicito i file dal progetto. Queste regole impostano automaticamente anche l'azione di compilazione del file. Questo comportamento è diverso dai progetti .NET Framework non SDK meno recenti, che non hanno regole predefinite di inclusione o esclusione. I progetti .NET Framework richiedono di dichiarare in modo esplicito i file da includere nel progetto.
I file di progetto .NET includono un set standard di regole per l'elaborazione automatica dei file. I progetti WPF aggiungono regole aggiuntive.
La tabella seguente illustra quali elementi e glob sono inclusi ed esclusi in .NET Desktop SDK quando la proprietà del progetto UseWPF
è impostata su true
:
Elemento | GLOB Include | GLOB Exclude | GLOB Remove |
---|---|---|---|
ApplicationDefinition | App.xaml oppure Application.xaml | N/D | N/D |
Page | **/*.xaml | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc Qualsiasi XAML definito da ApplicationDefinition |
N/D |
None | N/D | N/D | **/*.xaml |
Ecco le impostazioni predefinite di inclusione ed esclusione per tutti i tipi di progetto. Per altre informazioni, vedere Inclusioni ed esclusioni predefinite.
Elemento | GLOB Include | GLOB Exclude | GLOB Remove |
---|---|---|---|
Compile | **/*.Cs; **/*.vb (o altre estensioni del linguaggio) | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | N/D |
EmbeddedResource | **/*.resx | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | N/D |
None | **/* | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | **/*.cs; **/*.resx |
Errori relativi agli elementi "duplicati"
Se i file sono stati aggiunti esplicitamente al progetto o se i globi XAML includono automaticamente i file nel progetto, è possibile che si verifichi uno dei seguenti errori:
- Sono stati inclusi elementi 'ApplicationDefinition' duplicati.
- Sono stati inclusi elementi 'Page' duplicati.
Questi errori sono il risultato di un conflitto tra i globi impliciti Include e le impostazioni. Per risolvere il problema, impostare EnableDefaultApplicationDefinition
o EnableDefaultPageItems
su false
. L'impostazione di questi valori per false
ripristinare il comportamento degli SDK precedenti in cui è necessario definire in modo esplicito i glob predefiniti o i file da includere nel progetto.
È possibile disabilitare completamente tutte le include implicite impostando la proprietà EnableDefaultItems
su false
.
Impostazioni WPF
Per informazioni sulle impostazioni del progetto non specifiche di WPF, vedere informazioni di riferimento su MSBuild per i progetti .NET SDK.
UseWPF
La proprietà UseWPF
controlla se includere o meno riferimenti alle librerie WPF. Questa impostazione modifica anche la pipeline MSBuild per elaborare correttamente un progetto WPF e i file correlati. Il valore predefinito è false
. Impostare la proprietà UseWPF
su true
per abilitare il supporto WPF. È possibile specificare come destinazione la piattaforma Windows solo quando questa proprietà è abilitata.
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
Quando questa proprietà è impostata su true
, i progetti .NET importano automaticamente .NET Desktop SDK.
EnableDefaultApplicationDefinition
La proprietà EnableDefaultApplicationDefinition
controlla se gli elementi ApplicationDefinition
vengono inclusi in modo implicito nel progetto. Il valore predefinito è true
. Impostare la proprietà EnableDefaultApplicationDefinition
su false
per disabilitare l'inclusione implicita del file.
<PropertyGroup>
<EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>
</PropertyGroup>
Questa proprietà richiede che la proprietà EnableDefaultItems
sia impostata su true
, ovvero l'impostazione predefinita.
EnableDefaultPageItems
La proprietà EnableDefaultPageItems
controlla se gli elementi Page
, che sono filexaml, vengono inclusi in modo implicito nel progetto. Il valore predefinito è true
. Impostare la proprietà EnableDefaultPageItems
su false
per disabilitare l'inclusione implicita del file.
<PropertyGroup>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>
Questa proprietà richiede che la proprietà EnableDefaultItems
sia impostata su true
, ovvero l'impostazione predefinita.
Impostazioni di Windows Form
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
- UseWindowsForms
Per informazioni sulle proprietà del progetto non specifiche di WinForms, vedere informazioni di riferimento su MSBuild per i progetti .NET SDK.
ApplicationDefaultFont
La proprietà ApplicationDefaultFont
specifica informazioni sul tipo di carattere personalizzate da applicare a livello di applicazione. Controlla se l'API ApplicationConfiguration.Initialize()
generata dall'origine genera o meno una chiamata al metodo Application.SetDefaultFont(Font).
Il valore predefinito è una stringa vuota e significa che il tipo di carattere predefinito dell'applicazione viene originato dalla proprietà Control.DefaultFont.
Un valore non vuoto deve essere conforme a un formato equivalente all'output del metodo FontConverter.ConvertTo
richiamato con le impostazioni cultura invarianti, ovvero separatore di elenco=,
e separatore decimale=.
. Il formato è: name, size[units[, style=style1[, style2, ...]]]
.
<PropertyGroup>
<ApplicationDefaultFont>Calibri, 11pt, style=regular</ApplicationDefaultFont>
</PropertyGroup>
Questa proprietà è supportata da .NET 6 e versioni successive e Da Visual Studio 2022 e versioni successive.
ApplicationHighDpiMode
La proprietà ApplicationHighDpiMode
specifica il valore predefinito a livello di applicazione per la modalità DPI elevata. Controlla l'argomento del metodo Application.SetHighDpiMode(HighDpiMode) generato dall'API di ApplicationConfiguration.Initialize()
generata dall'origine.
Il valore predefinito è SystemAware
.
<PropertyGroup>
<ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
</PropertyGroup>
ApplicationHighDpiMode
può essere impostato su uno dei valori di enumerazione HighDpiMode:
Valore | Descrizione |
---|---|
DpiUnaware |
La finestra dell'applicazione non viene ridimensionata per le modifiche dpi e presuppone sempre un fattore di scala pari al 100%. |
DpiUnawareGdiScaled |
Simile a DpiUnaware , ma migliora la qualità del contenuto basato su GDI/GDI+. |
PerMonitor |
La finestra verifica il valore DPI quando viene creato e, quando viene modificato, regola il fattore di scala. |
PerMonitorV2 |
Simile a PerMonitor , ma abilita la notifica delle modifiche del valore DPI della finestra figlio, la scalabilità migliorata dei controlli comctl32 e il ridimensionamento della finestra di dialogo. |
SystemAware |
Valore predefinito se non viene specificato. La finestra esegue una query sulla DPI del monitoraggio primario una sola volta e usa questo valore per l'applicazione su tutti i monitor. |
Questa proprietà è supportata da .NET 6 e versioni successive.
ApplicationUseCompatibleTextRendering
La proprietà ApplicationUseCompatibleTextRendering
specifica l'impostazione predefinita a livello di applicazione per la proprietà UseCompatibleTextRendering
definita in determinati controlli. Controlla l'argomento del metodo Application.SetCompatibleTextRenderingDefault(Boolean) generato dall'API ApplicationConfiguration.Initialize()
generata dall'origine.
Il valore predefinito è false
.
<PropertyGroup>
<ApplicationUseCompatibleTextRendering>true</ApplicationUseCompatibleTextRendering>
</PropertyGroup>
Questa proprietà è supportata da .NET 6 e versioni successive.
ApplicationVisualStyles
La proprietà ApplicationVisualStyles
specifica l'impostazione predefinita a livello di applicazione per l'abilitazione degli stili di visualizzazione. Controlla se l'API di ApplicationConfiguration.Initialize()
generata dall'origine genera una chiamata a Application.EnableVisualStyles().
Il valore predefinito è true
.
<PropertyGroup>
<ApplicationVisualStyles>true</ApplicationVisualStyles>
</PropertyGroup>
Questa proprietà è supportata da .NET 6 e versioni successive.
UseWindowsForms
La proprietà UseWindowsForms
controlla se l'applicazione è compilata o meno come destinazione di Windows Form. Questa proprietà modifica la pipeline MSBuild per elaborare correttamente un progetto Windows Form e i file correlati. Il valore predefinito è false
. Impostare la proprietà UseWindowsForms
su true
per abilitare il supporto di Windows Form. È possibile specificare come destinazione la piattaforma Windows solo quando questa impostazione è abilitata.
<PropertyGroup>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
Quando questa proprietà è impostata su true
, i progetti .NET importano automaticamente .NET Desktop SDK.