Share via


MSBuild-referentie voor .NET Desktop SDK-projecten

Deze pagina 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, zoals net8.0-windows.
  • Voeg indien nodig een ui-frameworkeigenschap toe (of beide):
    • Ingesteld UseWPF op true importeren en gebruiken van WPF.
    • Ingesteld UseWindowsForms op true het importeren en gebruiken van WinForms.
  • (Optioneel) Ingesteld OutputType op WinExe. 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

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.NET 5+ projecten, importeert u 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.

EnableDefault-itemsPage

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

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.NET 5+ projecten, importeert u automatisch de .NET Desktop SDK.

Gedeelde instellingen

DisableWinExeOutputInference

Van toepassing op .NET 5 SDK en hoger.

Wanneer een app de Exe waarde voor de OutputType eigenschap heeft ingesteld, wordt er een consolevenster gemaakt als de app niet wordt uitgevoerd vanuit een console. Dit gedrag is over het algemeen niet wenselijk voor een Windows-bureaublad-app. Met de WinExe waarde wordt geen consolevenster gemaakt. Vanaf de .NET 5 SDK wordt de Exe waarde automatisch omgezet in WinExe.

De DisableWinExeOutputInference eigenschap herstelt het gedrag van de Exe behandeling als WinExe. Stel deze waarde in om true het gedrag van de OutputType eigenschapswaarde van Exe. De standaardwaarde is false.

<PropertyGroup>
  <DisableWinExeOutputInference>true</DisableWinExeOutputInference>
</PropertyGroup>

Zie ook