Share via


MSBuild-referencia .NET Desktop SDK-projektekhez

Ez a lap a Windows Forms (WinForms) és Windows megjelenítési alaprendszer (WPF) projektek .NET Desktop SDK-val való konfigurálásához használt MSBuild tulajdonságokra és elemekre vonatkozó hivatkozás.

Feljegyzés

Ez a cikk a .NET SDK MSBuild tulajdonságainak egy részét ismerteti az asztali alkalmazásokhoz kapcsolódóan. A .NET SDK-specifikus MSBuild-tulajdonságok listáját a .NET SDK-projektek MSBuild-referenciájában találja. A gyakori MSBuild tulajdonságok listáját lásd: Common MSBuild properties.

A .NET Desktop SDK engedélyezése

A WinForms vagy a WPF használatához adja meg a következő beállításokat a WinForms- vagy WPF-projekt projektfájljában:

  • A .NET SDK Microsoft.NET.Sdkmegcélzása. További információ: Project files.
  • Windows-specifikus cél-keretrendszer-monikerre van állítvaTargetFramework, például net8.0-windows.
  • Adjon hozzá egy felhasználói felületi keretrendszertulajdonságot (vagy ha szükséges mindkettőt):
    • A WPF importálására true és használatára van beállítvaUseWPF.
    • Állítsa be UseWindowsForms a true WinForms importálására és használatára.
  • (Nem kötelező) Beállítás: OutputTypeWinExe. Ez a beállítás egy alkalmazást hoz létre a tár helyett. Tár létrehozásához hagyja ki ezt a tulajdonságot.
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net8.0-windows</TargetFramework>

    <UseWPF>true</UseWPF>
    <!-- and/or -->
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

A WPF alapértelmezett tartalma és kizárása

Az SDK-projektek olyan szabályokat határoznak meg, amelyekkel implicit módon belefoglalhatók vagy kizárhatók a fájlok a projektből. Ezek a szabályok automatikusan beállítják a fájl buildelési műveletét is. Ez a viselkedés ellentétben áll a régebbi, nem SDK-.NET-keretrendszer-projektekéval, amelyek alapértelmezés szerint nem tartalmaznak vagy zárnak ki szabályokat. .NET-keretrendszer projektekhez explicit módon deklarálnia kell, hogy mely fájlokat vegye fel a projektbe.

A .NET-projektfájlok szabványos szabálykészletet tartalmaznak a fájlok automatikus feldolgozásához. A WPF-projektek további szabályokat adnak hozzá.

Az alábbi táblázat azt mutatja be, hogy mely elemek és globok szerepelnek a .NET Desktop SDK-ban, ha a UseWPF projekttulajdonság a következőre truevan állítva:

Elem Glob belefoglalása Glob kizárása Glob eltávolítása
ApplicationDefinition App.xaml vagy Application.xaml N.A. N.A.
Page **/*.Xaml **/*.Felhasználó; **/*.*Proj; **/*.sln; **/*.vssscc
Minden XAML, amelyet ApplicationDefinition
N.A.
None N.A. N.A. **/*.Xaml

Íme az összes projekttípus alapértelmezett belefoglalási és kizárási beállításai. További információkért lásd : Alapértelmezett tartalmazza és kizárja.

Elem Glob belefoglalása Glob kizárása Glob eltávolítása
Compile **/*.Cs; **/*.vb (vagy más nyelvi bővítmények) **/*.Felhasználó; **/*.*Proj; **/*.sln; **/*.vssscc n/a
EmbeddedResource **/*.resx **/*.Felhasználó; **/*.*Proj; **/*.sln; **/*.vssscc n/a
None **/* **/*.Felhasználó; **/*.*Proj; **/*.sln; **/*.vssscc **/*.Cs; **/*.resx

Ha kifejezetten hozzáadott fájlokat a projekthez, vagy XAML-beli globokkal automatikusan belefoglalja a fájlokat a projektbe, a következő hibák egyike jelenhet meg:

  • A program ismétlődő ""ApplicationDefinition elemeket tartalmaz.
  • A program ismétlődő ""Page elemeket tartalmaz.

Ezek a hibák az implicit Include globs és a beállítások ütközésének eredménye. A probléma megoldásához állítsa vagy állítsa be EnableDefaultApplicationDefinitionEnableDefaultPageItems a következőt false: . Ezeknek az értékeknek false a beállítása visszaáll a korábbi SDK-k viselkedésére, ahol explicit módon meg kellett határoznia az alapértelmezett globokat vagy a projektbe belefoglalandó fájlokat.

A tulajdonság beállításával teljes mértékben letilthatja az EnableDefaultItems összes implicit tulajdonságotfalse.

WPF-beállítások

A nem WPF-specifikus projektbeállításokról további információt a .NET SDK-projektek MSBuild-referenciájában talál.

UseWPF

A UseWPF tulajdonság azt szabályozza, hogy a WPF-kódtárakra mutató hivatkozásokat tartalmazzon-e. Ez a beállítás az MSBuild folyamatot is módosítja egy WPF-projekt és a kapcsolódó fájlok megfelelő feldolgozásához. Az alapértelmezett érték false. Állítsa be a tulajdonságot UseWPF a true WPF-támogatás engedélyezéséhez. A Windows-platformot csak akkor célozhatja meg, ha ez a tulajdonság engedélyezve van.

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

Ha ez a tulajdonság be van állítva true, a .NET 5+ projektek automatikusan importálják a .NET Desktop SDK-t.

EnableDefaultApplicationDefinition

A EnableDefaultApplicationDefinition tulajdonság azt szabályozza, hogy az elemek implicit módon szerepelnek-e ApplicationDefinition a projektben. Az alapértelmezett érték true. Állítsa be a tulajdonságot EnableDefaultApplicationDefinition úgy, hogy false letiltsa az implicit fájlbefoglalást.

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

Ehhez a tulajdonsághoz be kell állítani truea EnableDefaultItems tulajdonságot, amely az alapértelmezett beállítás.

EnableDefault-elemekPage

A EnableDefaultPageItems tulajdonság azt szabályozza, hogy az .xaml-fájlokat tartalmazó elemek implicit módon szerepelnek-e Page a projektben. Az alapértelmezett érték true. Állítsa be a tulajdonságot EnableDefaultPageItems úgy, hogy false letiltsa az implicit fájlbefoglalást.

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

Ehhez a tulajdonsághoz be kell állítani truea EnableDefaultItems tulajdonságot, amely az alapértelmezett beállítás.

Windows Forms-beállítások

A nem WinForms-specifikus projekttulajdonságokról további információt a .NET SDK-projektek MSBuild-referenciajában talál.

ApplicationDefaultFont

A ApplicationDefaultFont tulajdonság az alkalmazásszintű alkalmazásra alkalmazandó egyéni betűtípus-információkat adja meg. Azt szabályozza, hogy a forrás által generált ApplicationConfiguration.Initialize() API meghívja-e a metódust Application.SetDefaultFont(Font) . Az alapértelmezett érték egy üres sztring, ami azt jelenti, hogy az alkalmazás alapértelmezett betűtípusa a Control.DefaultFont tulajdonságból származik.

A nem üres értékeknek meg kell felelniük az invariáns kultúrával meghívott metódus kimenetének FontConverter.ConvertTo (azaz listaelválasztó=, és decimális elválasztó=.) kimenetének. A formátum a következő: name, size[units[, style=style1[, style2, ...]]].

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

Ezt a tulajdonságot a .NET 6-os és újabb verziói, valamint a Visual Studio 2022 és újabb verziói támogatják.

ApplicationHighDpiMode

A ApplicationHighDpiMode tulajdonság az alkalmazásszintű alapértelmezett értéket adja meg a magas DPI-módhoz. Ez szabályozza a forrás által létrehozott API által kibocsátott metódus argumentumát Application.SetHighDpiMode(HighDpiMode)ApplicationConfiguration.Initialize() . Az alapértelmezett érték SystemAware.

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

Az ApplicationHighDpiMode enumerálás értéke a HighDpiMode következő lehet:

Érték Leírás
DpiUnaware Az alkalmazásablak nem méretezi a DPI-módosításokat, és mindig 100%-os méretezési tényezőt feltételez.
DpiUnawareGdiScaled Hasonló, DpiUnawarede javítja a GDI/GDI+ alapú tartalmak minőségét.
PerMonitor Az ablak a DPI létrehozását követően ellenőrzi a DPI-t, és módosítja a skálázási tényezőt, amikor a DPI megváltozik.
PerMonitorV2 Hasonló, de lehetővé teszi a PerMonitorgyermekablak DPI változásértesítését, a comctl32 vezérlők továbbfejlesztett skálázását és a párbeszédpanelek skálázását.
SystemAware Alapértelmezett , ha nincs megadva.
Az ablak egyszer lekérdezi az elsődleges monitor DPI-ját, és ezt az értéket használja az alkalmazáshoz az összes monitoron.

Ezt a tulajdonságot a .NET 6-os és újabb verziói támogatják.

ApplicationUseCompatibleTextRendering

A ApplicationUseCompatibleTextRendering tulajdonság az alkalmazásszintű alapértelmezett értéket adja meg az UseCompatibleTextRendering egyes vezérlőkön definiált tulajdonsághoz. Ez szabályozza a forrás által létrehozott API által kibocsátott metódus argumentumát Application.SetCompatibleTextRenderingDefault(Boolean)ApplicationConfiguration.Initialize() . Az alapértelmezett érték false.

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

Ezt a tulajdonságot a .NET 6-os és újabb verziói támogatják.

ApplicationVisualStyles

A ApplicationVisualStyles tulajdonság az alkalmazásszintű alapértelmezett értéket adja meg a vizuális stílusok engedélyezéséhez. Azt szabályozza, hogy a forrás által generált ApplicationConfiguration.Initialize() API hívásokat Application.EnableVisualStyles()bocsát-e ki. Az alapértelmezett érték true.

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

Ezt a tulajdonságot a .NET 6-os és újabb verziói támogatják.

UseWindowsForms

A UseWindowsForms tulajdonság azt szabályozza, hogy az alkalmazás a Windows Forms megcélzására készült-e. Ez a tulajdonság módosítja az MSBuild folyamatot egy Windows Forms-projekt és a kapcsolódó fájlok megfelelő feldolgozásához. Az alapértelmezett érték false. Állítsa be a tulajdonságot UseWindowsForms a true Windows Forms támogatásának engedélyezéséhez. A Windows-platformot csak akkor célozhatja meg, ha ez a beállítás engedélyezve van.

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

Ha ez a tulajdonság be van állítva true, a .NET 5+ projektek automatikusan importálják a .NET Desktop SDK-t.

Megosztott beállítások

DisableWinExeOutputInference

A .NET 5 SDK-ra és újabb verziókra vonatkozik.

Ha egy alkalmazás rendelkezik a ExeOutputType tulajdonság értékével, létrejön egy konzolablak, ha az alkalmazás nem konzolról fut. Ez a viselkedés windowsos asztali alkalmazások esetében általában nem kívánatos. Az érték esetében WinExe a konzolablak nem jön létre. A .NET 5 SDK-tól kezdve az Exe érték automatikusan át lesz alakítva WinExe.

A DisableWinExeOutputInference tulajdonság visszaállítja a kezelés ExeWinExeviselkedését. Állítsa be ezt az értéket úgy, hogy true visszaállítsa a OutputType tulajdonságérték viselkedését Exe. Az alapértelmezett érték false.

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

Lásd még