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 exempelnet8.0-windows
. - Lägg till en UI Framework-egenskap (eller båda, om det behövs):
- Ange
UseWPF
till för atttrue
importera och använda WPF. - Ange
UseWindowsForms
till för atttrue
importera och använda WinForms.
- Ange
- (Valfritt) Ange
OutputType
tillWinExe
. 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 |
Fel som rör "duplicerade" objekt
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å true
importerar .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
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
- AnvändaWindowsForms
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 |
DpiUnaware Liknar , 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 |
PerMonitor Liknar , 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å true
importerar .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 OutputType
Exe
för . Standardvärdet är false
.
<PropertyGroup>
<DisableWinExeOutputInference>true</DisableWinExeOutputInference>
</PropertyGroup>
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för