MSBuild-referentie voor .NET Desktop SDK-projecten
Dit page is een verwijzing voor de MSBuild-eigenschappen en -items die u gebruikt voor het configureren van Windows Forms-projecten (WinForms) en Windows Presentation Foundation (WPF) met de .NET Desktop SDK.
Notitie
In dit artikel wordt een subset van de MSBuild-eigenschappen voor de .NET SDK beschreven, omdat deze betrekking heeft op desktop-apps. Zie MSBuild-referentie voor .NET SDK-projecten voor een lijst met algemene MSBuild-eigenschappen voor .NET SDK-projecten. Zie Common MSBuild-eigenschappen voor een lijst met algemene MSBuild-eigenschappen.
.NET Desktop SDK inschakelen
Als u WinForms of WPF wilt gebruiken, geeft u de volgende instellingen op in het projectbestand van uw WinForms- of WPF-project:
- Richt u op de .NET SDK
Microsoft.NET.Sdk
. Zie Project-bestanden voor meer informatie. - Instellen
TargetFramework
op een Windows-specifieke doelframework moniker, zoalsnet8.0-windows
. - Voeg indien nodig een ui-frameworkeigenschap toe (of beide):
- Ingesteld
UseWPF
optrue
importeren en gebruiken van WPF. - Ingesteld
UseWindowsForms
optrue
het importeren en gebruiken van WinForms.
- Ingesteld
- (Optioneel) Ingesteld
OutputType
opWinExe
. Deze instelling produceert een app in plaats van een bibliotheek. Als u een bibliotheek wilt produceren, laat u deze eigenschap weg.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
<!-- and/or -->
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>
WPF-standaardinstellingen omvatten en uitsluiten
SDK-projecten definiƫren een set regels om bestanden impliciet op te nemen of uit te sluiten van het project. Met deze regels wordt ook automatisch de buildactie van het bestand ingesteld. Dit gedrag is in tegenstelling tot de oudere .NET Framework-projecten die geen standaardregels voor opnemen of uitsluiten hebben. Voor .NET Framework-projecten moet u expliciet declareren welke bestanden in het project moeten worden opgenomen.
.NET-projectbestanden bevatten een standaardset regels voor het automatisch verwerken van bestanden. WPF-projecten voegen extra regels toe.
In de volgende tabel ziet u welke elementen en globs zijn opgenomen en uitgesloten in de .NET Desktop SDK wanneer de UseWPF
projecteigenschap is ingesteld op true
:
Element | Voeg een glob toe | Glob uitsluiten | Glob verwijderen |
---|---|---|---|
ApplicationDefinition | App.xaml of Application.xaml | N.v.t. | N.v.t. |
Page | **/*.xaml | **/*.gebruiker; **/*.*proj; **/*.sln; **/*.vssscc Elke XAML gedefinieerd door ApplicationDefinition |
N.v.t. |
None | N.v.t. | N.v.t. | **/*.xaml |
Hier volgen de standaardinstellingen voor opnemen en uitsluiten voor alle projecttypen. Zie Standaard-insluitingen en uitsluitingen voor meer informatie.
Element | Voeg een glob toe | Glob uitsluiten | Glob verwijderen |
---|---|---|---|
Compile | **/*.Cs; **/*.vb (of andere taalextensies) | **/*.gebruiker; **/*.*proj; **/*.sln; **/*.vssscc | N.v.t. |
EmbeddedResource | **/*.resx | **/*.gebruiker; **/*.*proj; **/*.sln; **/*.vssscc | N.v.t. |
None | **/* | **/*.gebruiker; **/*.*proj; **/*.sln; **/*.vssscc | **/*.Cs; **/*.resx |
Fouten met betrekking tot dubbele items
Als u expliciet bestanden aan uw project hebt toegevoegd of XAML-globs hebt om automatisch bestanden in uw project op te nemen, krijgt u mogelijk een van de volgende fouten:
- Er zijn dubbele itemsApplicationDefinition opgenomen.
- Er zijn dubbele itemsPage opgenomen.
Deze fouten zijn het gevolg van de impliciete include-globs die conflicteren met uw instellingen. Als u dit probleem wilt omzeilen, stelt u dit EnableDefaultApplicationDefinition
in of EnableDefaultPageItems
op false
. Als u deze waarden instelt om terug te false
keren naar het gedrag van eerdere SDK's, waarbij u expliciet de standaard globs of de bestanden moet definiƫren die in uw project moeten worden opgenomen.
U kunt alle impliciete insluitingen volledig uitschakelen door de EnableDefaultItems
eigenschap in te stellen op false
.
WPF-instellingen
Zie MSBuild-referentie voor .NET SDK-projecten voor informatie over niet-WPF-specifieke projectinstellingen.
WPF gebruiken
De UseWPF
eigenschap bepaalt of verwijzingen naar WPF-bibliotheken al dan niet moeten worden opgenomen. Deze instelling wijzigt ook de MSBuild-pijplijn om een WPF-project en gerelateerde bestanden correct te verwerken. De standaardwaarde is false
. Stel de UseWPF
eigenschap in om true
WPF-ondersteuning in te schakelen. U kunt het Windows-platform alleen richten wanneer deze eigenschap is ingeschakeld.
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
Wanneer deze eigenschap is ingesteld op true
, importeert .NET-projecten automatisch de .NET Desktop SDK.
EnableDefaultApplicationDefinition
De EnableDefaultApplicationDefinition
eigenschap bepaalt of ApplicationDefinition
items impliciet zijn opgenomen in het project. De standaardwaarde is true
. Stel de EnableDefaultApplicationDefinition
eigenschap in om de impliciete bestandsopname uit te false
schakelen.
<PropertyGroup>
<EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>
</PropertyGroup>
Voor deze eigenschap is vereist dat de EnableDefaultItems
eigenschap is ingesteld op true
, wat de standaardinstelling is.
EnableDefaultPageItems
De EnableDefaultPageItems
eigenschap bepaalt of Page
items, die .xaml-bestanden zijn, impliciet zijn opgenomen in het project. De standaardwaarde is true
. Stel de EnableDefaultPageItems
eigenschap in om de impliciete bestandsopname uit te false
schakelen.
<PropertyGroup>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>
Voor deze eigenschap is vereist dat de EnableDefaultItems
eigenschap is ingesteld op true
, wat de standaardinstelling is.
Instellingen voor Windows Forms
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
- UseWindowsForms
Zie MSBuild-referentie voor .NET SDK-projecten voor informatie over niet-WinForms-specifieke projecteigenschappen.
ApplicationDefaultFont
De ApplicationDefaultFont
eigenschap specificeert aangepaste lettertypegegevens die moeten worden toegepast op toepassingsbreed. Hiermee bepaalt u of de door de bron gegenereerde ApplicationConfiguration.Initialize()
API een aanroep naar de Application.SetDefaultFont(Font) methode verzendt.
De standaardwaarde is een lege tekenreeks en betekent dat het standaardlettertype van de toepassing afkomstig is van de Control.DefaultFont eigenschap.
Een niet-lege waarde moet voldoen aan een indeling die gelijk is aan de uitvoer van de FontConverter.ConvertTo
methode die wordt aangeroepen met de invariante cultuur (dat wil gezegd lijstscheidingsteken=,
en decimaal scheidingsteken=.
). De indeling is: name, size[units[, style=style1[, style2, ...]]]
.
<PropertyGroup>
<ApplicationDefaultFont>Calibri, 11pt, style=regular</ApplicationDefaultFont>
</PropertyGroup>
Deze eigenschap wordt ondersteund door .NET 6 en latere versies, en Visual Studio 2022 en latere versies.
ApplicationHighDpiMode
De ApplicationHighDpiMode
eigenschap geeft de toepassingsbrede standaardwaarde op voor de hoge DPI-modus. Het bepaalt het argument van de Application.SetHighDpiMode(HighDpiMode) methode die wordt verzonden door de door de bron gegenereerde ApplicationConfiguration.Initialize()
API.
De standaardwaarde is SystemAware
.
<PropertyGroup>
<ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
</PropertyGroup>
De ApplicationHighDpiMode
waarde kan worden ingesteld op een van de HighDpiMode opsommingswaarden:
Weergegeven als | Beschrijving |
---|---|
DpiUnaware |
Het toepassingsvenster schaalt niet voor DPI-wijzigingen en gaat altijd uit van een schaalfactor van 100%. |
DpiUnawareGdiScaled |
Vergelijkbaar met DpiUnaware , maar verbetert de kwaliteit van GDI/GDI+ op basis van inhoud. |
PerMonitor |
Het venster controleert op DPI wanneer deze wordt gemaakt en past de schaalfactor aan wanneer de DPI verandert. |
PerMonitorV2 |
Vergelijkbaar met PerMonitor , maar schakelt dpi-wijzigingsmeldingen voor onderliggend venster in, verbeterde schaalaanpassing van besturingselementen voor comctl32 en het schalen van dialoogvensters. |
SystemAware |
Standaard indien niet opgegeven. Het venster voert eenmaal query's uit voor de DPI van de primaire monitor en gebruikt deze waarde voor de toepassing op alle monitors. |
Deze eigenschap wordt ondersteund door .NET 6 en nieuwere versies.
ApplicationUseCompatibleTextRendering
De ApplicationUseCompatibleTextRendering
eigenschap geeft de toepassingsbrede standaardwaarde op voor de UseCompatibleTextRendering
eigenschap die is gedefinieerd voor bepaalde besturingselementen. Het bepaalt het argument van de Application.SetCompatibleTextRenderingDefault(Boolean) methode die wordt verzonden door de door de bron gegenereerde ApplicationConfiguration.Initialize()
API.
De standaardwaarde is false
.
<PropertyGroup>
<ApplicationUseCompatibleTextRendering>true</ApplicationUseCompatibleTextRendering>
</PropertyGroup>
Deze eigenschap wordt ondersteund door .NET 6 en nieuwere versies.
ApplicationVisualStyles
De ApplicationVisualStyles
eigenschap geeft de toepassingsbrede standaardwaarde op voor het inschakelen van visuele stijlen. Hiermee bepaalt u of de door de bron gegenereerde ApplicationConfiguration.Initialize()
API een aanroep naar Application.EnableVisualStyles()verzendt.
De standaardwaarde is true
.
<PropertyGroup>
<ApplicationVisualStyles>true</ApplicationVisualStyles>
</PropertyGroup>
Deze eigenschap wordt ondersteund door .NET 6 en nieuwere versies.
UseWindowsForms
De UseWindowsForms
eigenschap bepaalt of uw toepassing is gebouwd om Windows Forms te targeten. Met deze eigenschap wordt de MSBuild-pijplijn gewijzigd om een Windows Forms-project en gerelateerde bestanden correct te verwerken. De standaardwaarde is false
. Stel de UseWindowsForms
eigenschap in om true
Ondersteuning voor Windows Forms in te schakelen. U kunt het Windows-platform alleen richten wanneer deze instelling is ingeschakeld.
<PropertyGroup>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
Wanneer deze eigenschap is ingesteld op true
, importeert .NET-projecten automatisch de .NET Desktop SDK.