Share via


MSBuild-referens för .NET Desktop SDK-projekt

Den här sidan är en referens för de MSBuild-egenskaper och objekt som du använder för att konfigurera Windows Forms-projekt (WinForms) och Windows Presentation Foundation (WPF) med .NET Desktop SDK.

Kommentar

Den här artikeln dokumenterar en delmängd av MSBuild-egenskaperna för .NET SDK när det gäller skrivbordsappar. En lista över vanliga .NET SDK-specifika MSBuild-egenskaper finns i MSBuild-referens för .NET SDK-projekt. En lista över vanliga MSBuild-egenskaper finns i Vanliga MSBuild-egenskaper.

Aktivera .NET Desktop SDK

Om du vill använda WinForms eller WPF anger du följande inställningar i projektfilen för ditt WinForms- eller WPF-projekt:

  • Rikta in dig på .NET SDK Microsoft.NET.Sdk. Mer information finns i Projektfiler.
  • Ange TargetFramework till en Windows-specifik målramverksmoniker, till exempel net8.0-windows.
  • Lägg till en UI Framework-egenskap (eller båda, om det behövs):
    • Ange UseWPF till för att true importera och använda WPF.
    • Ange UseWindowsForms till för att true importera och använda WinForms.
  • (Valfritt) Ange OutputType till WinExe. Den här inställningen skapar en app i stället för ett bibliotek. Om du vill skapa ett bibliotek utelämnar du den här egenskapen.
<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-standard inkluderar och exkluderar

SDK-projekt definierar en uppsättning regler för att implicit inkludera eller exkludera filer från projektet. Dessa regler anger också automatiskt filens byggåtgärd. Det här beteendet skiljer sig från äldre .NET Framework-projekt som inte har några standardregler för inkludering eller exkludering. .NET Framework-projekt kräver att du uttryckligen deklarerar vilka filer som ska ingå i projektet.

.NET-projektfiler innehåller en standarduppsättning regler för automatisk bearbetning av filer. WPF-projekt lägger till ytterligare regler.

Följande tabell visar vilka element och globs som ingår och exkluderas i .NET Desktop SDK när projektegenskapen UseWPF är inställd på true:

Element Inkludera glob Exkludera glob Ta bort glob
ApplicationDefinition App.xaml eller Application.xaml Saknas Saknas
Page **/*.Xaml **/*.Användaren; **/*.*Proj; **/*.Sln; **/*.vssscc
Alla XAML som definieras av ApplicationDefinition
Saknas
None Saknas Saknas **/*.Xaml

Här är standardinställningarna för att inkludera och exkludera för alla projekttyper. Mer information finns i Standard inkluderar och exkluderar.

Element Inkludera glob Exkludera glob Ta bort glob
Compile **/*.Cs; **/*.vb (eller andra språktillägg) **/*.Användaren; **/*.*Proj; **/*.Sln; **/*.vssscc Ej tillämpligt
EmbeddedResource **/*.resx **/*.Användaren; **/*.*Proj; **/*.Sln; **/*.vssscc Ej tillämpligt
None **/* **/*.Användaren; **/*.*Proj; **/*.Sln; **/*.vssscc **/*.Cs; **/*.resx

Om du uttryckligen har lagt till filer i projektet eller har XAML-globs för att automatiskt inkludera filer i projektet kan du få något av följande fel:

  • Duplicerade objektApplicationDefinition inkluderades.
  • Duplicerade objektPage inkluderades.

Dessa fel är ett resultat av att implicita Inkludera globs står i konflikt med dina inställningar. Om du vill undvika det här problemet anger du antingen EnableDefaultApplicationDefinition eller EnableDefaultPageItems till false. Om du anger dessa värden återgår false du till beteendet för tidigare SDK:er där du uttryckligen måste definiera standardglober eller de filer som ska inkluderas i projektet.

Du kan helt inaktivera alla implicita inkluderingar genom att ange egenskapen EnableDefaultItems till .false

WPF-inställningar

Information om icke-WPF-specifika projektinställningar finns i MSBuild-referens för .NET SDK-projekt.

UseWPF

Egenskapen UseWPF styr om referenser till WPF-bibliotek ska inkluderas eller inte. Den här inställningen ändrar även MSBuild-pipelinen för att bearbeta ett WPF-projekt och relaterade filer korrekt. Standardvärdet är false. Ange egenskapen UseWPF till true för att aktivera WPF-stöd. Du kan bara rikta in dig på Windows-plattformen när den här egenskapen är aktiverad.

<PropertyGroup>
  <UseWPF>true</UseWPF>
</PropertyGroup>

När den här egenskapen är inställd på trueimporterar .NET 5+ projekt automatiskt .NET Desktop SDK.

EnableDefaultApplicationDefinition

Egenskapen EnableDefaultApplicationDefinition styr om ApplicationDefinition objekt implicit ingår i projektet. Standardvärdet är true. Ange egenskapen EnableDefaultApplicationDefinition till false för att inaktivera implicit filinkludering.

<PropertyGroup>
  <EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>
</PropertyGroup>

Den här egenskapen kräver att egenskapen EnableDefaultItems är inställd på true, vilket är standardinställningen.

EnableDefault-objektPage

Egenskapen EnableDefaultPageItems styr om Page objekt, som är .xaml-filer , implicit ingår i projektet. Standardvärdet är true. Ange egenskapen EnableDefaultPageItems till false för att inaktivera implicit filinkludering.

<PropertyGroup>
  <EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>

Den här egenskapen kräver att egenskapen EnableDefaultItems är inställd på true, vilket är standardinställningen.

Inställningar för Windows-formulär

Information om icke-WinForms-specifika projektegenskaper finns i MSBuild-referens för .NET SDK-projekt.

ApplicationDefaultFont

Egenskapen ApplicationDefaultFont anger anpassad teckensnittsinformation som ska tillämpas i hela programmet. Den styr om det källgenererade ApplicationConfiguration.Initialize() API:et sänder ett anrop till Application.SetDefaultFont(Font) metoden eller inte. Standardvärdet är en tom sträng, och det innebär att programmets standardteckensnitt kommer från egenskapen Control.DefaultFont .

Ett icke-tomt värde måste överensstämma med ett format som motsvarar utdata från metoden FontConverter.ConvertTo som anropas med den invarianta kulturen (det vill: listavgränsare=, och decimalavgränsare=.). Formatet är: name, size[units[, style=style1[, style2, ...]]].

<PropertyGroup>
  <ApplicationDefaultFont>Calibri, 11pt, style=regular</ApplicationDefaultFont>
</PropertyGroup>

Den här egenskapen stöds av .NET 6 och senare versioner och Visual Studio 2022 och senare versioner.

ApplicationHighDpiMode

Egenskapen ApplicationHighDpiMode anger standardvärdet för hela programmet för det höga DPI-läget. Den styr argumentet för den Application.SetHighDpiMode(HighDpiMode) metod som genereras av det källgenererade API:et ApplicationConfiguration.Initialize() . Standardvärdet är SystemAware.

<PropertyGroup>
  <ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
</PropertyGroup>

ApplicationHighDpiMode Kan anges till ett av uppräkningsvärdenaHighDpiMode:

Värde beskrivning
DpiUnaware Programfönstret skalas inte för DPI-ändringar och förutsätter alltid en skalningsfaktor på 100 %.
DpiUnawareGdiScaled DpiUnawareLiknar , men förbättrar kvaliteten på GDI/GDI+-baserat innehåll.
PerMonitor Fönstret söker efter DPI när det skapas och justerar skalningsfaktorn när DPI ändras.
PerMonitorV2 PerMonitorLiknar , men aktiverar DPI-ändringsmeddelande för underordnade fönster, förbättrad skalning av comctl32-kontroller och dialogskalning.
SystemAware Standard om det inte anges.
Fönstret frågar efter DPI för den primära övervakaren en gång och använder det här värdet för programmet på alla övervakare.

Den här egenskapen stöds av .NET 6 och senare versioner.

ApplicationUseCompatibleTextRendering

Egenskapen ApplicationUseCompatibleTextRendering anger standardvärdet för hela programmet för egenskapen UseCompatibleTextRendering som definierats för vissa kontroller. Den styr argumentet för den Application.SetCompatibleTextRenderingDefault(Boolean) metod som genereras av det källgenererade API:et ApplicationConfiguration.Initialize() . Standardvärdet är false.

<PropertyGroup>
  <ApplicationUseCompatibleTextRendering>true</ApplicationUseCompatibleTextRendering>
</PropertyGroup>

Den här egenskapen stöds av .NET 6 och senare versioner.

ApplicationVisualStyles

Egenskapen ApplicationVisualStyles anger den programomfattande standardinställningen för aktivering av visuella format. Den styr om det källgenererade ApplicationConfiguration.Initialize() API:et genererar ett anrop till Application.EnableVisualStyles(). Standardvärdet är true.

<PropertyGroup>
  <ApplicationVisualStyles>true</ApplicationVisualStyles>
</PropertyGroup>

Den här egenskapen stöds av .NET 6 och senare versioner.

AnvändaWindowsForms

Egenskapen UseWindowsForms styr om ditt program har skapats för att rikta in sig på Windows-formulär. Den här egenskapen ändrar MSBuild-pipelinen för att bearbeta ett Windows Forms-projekt och relaterade filer korrekt. Standardvärdet är false. Ange egenskapen UseWindowsForms till true för att aktivera stöd för Windows Forms. Du kan bara rikta in dig på Windows-plattformen när den här inställningen är aktiverad.

<PropertyGroup>
  <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

När den här egenskapen är inställd på trueimporterar .NET 5+ projekt automatiskt .NET Desktop SDK.

Delade inställningar

DisableWinExeOutputInference

Gäller för .NET 5 SDK och senare.

När en app har värdet Exe inställt för OutputType egenskapen skapas ett konsolfönster om appen inte körs från en konsol. Det här beteendet är vanligtvis inte önskvärt för en Windows Desktop-app. Med värdet WinExe skapas inte ett konsolfönster. Från och med .NET 5 SDK Exe omvandlas värdet automatiskt till WinExe.

Egenskapen DisableWinExeOutputInference återställer beteendet för att behandla Exe som WinExe. Ange det här värdet till true för att återställa beteendet för egenskapsvärdet OutputTypeExeför . Standardvärdet är false.

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

Se även