Събитие
Създаване на интелигентни приложения
17.03, 23 ч. - 21.03, 23 ч.
Присъединете се към поредицата срещи, за да изградите мащабируеми AI решения, базирани на реални случаи на употреба с колеги разработчици и експерти.
Регистрирайте се сегаТози браузър вече не се поддържа.
Надстройте до Microsoft Edge, за да се възползвате от най-новите функции, актуализации на защитата и техническа поддръжка.
This page is a reference for the MSBuild properties and items that you use to configure Windows Forms (WinForms) and Windows Presentation Foundation (WPF) projects with the .NET Desktop SDK.
Бележка
This article documents a subset of the MSBuild properties for the .NET SDK as it relates to desktop apps. For a list of common .NET SDK-specific MSBuild properties, see MSBuild reference for .NET SDK projects. For a list of common MSBuild properties, see Common MSBuild properties.
To use WinForms or WPF, specify the following settings in the project file of your WinForms or WPF project:
Microsoft.NET.Sdk
. For more information, see Project files.TargetFramework
to a Windows-specific target framework moniker, such as net8.0-windows
.UseWPF
to true
to import and use WPF.UseWindowsForms
to true
to import and use WinForms.OutputType
to WinExe
. This setting produces an app as opposed to a library. To produce a library, omit this property.<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
<!-- and/or -->
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>
SDK projects define a set of rules to implicitly include or exclude files from the project. These rules also automatically set the file's build action. This behavior is unlike the older non-SDK .NET Framework projects, which have no default include or exclude rules. .NET Framework projects require you to explicitly declare which files to include in the project.
.NET project files include a standard set of rules for automatically processing files. WPF projects add additional rules.
The following table shows which elements and globs are included and excluded in the .NET Desktop SDK when the UseWPF
project property is set to true
:
Element | Include glob | Exclude glob | Remove glob |
---|---|---|---|
ApplicationDefinition | App.xaml or Application.xaml | N/A | N/A |
Page | **/*.xaml | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc Any XAML defined by ApplicationDefinition |
N/A |
None | N/A | N/A | **/*.xaml |
Here are the default include and exclude settings for all project types. For more information, see Default includes and excludes.
Element | Include glob | Exclude glob | Remove glob |
---|---|---|---|
Compile | **/*.cs; **/*.vb (or other language extensions) | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | N/A |
EmbeddedResource | **/*.resx | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | N/A |
None | **/* | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | **/*.cs; **/*.resx |
If you explicitly added files to your project, or have XAML globs to automatically include files in your project, you might get one of the following errors:
These errors are a result of the implicit Include globs conflicting with your settings. To work around this problem, set either EnableDefaultApplicationDefinition
or EnableDefaultPageItems
to false
. Setting these values to false
reverts to the behavior of previous SDKs where you had to explicitly define either the default globs or the files to include in your project.
You can completely disable all implicit includes by setting the EnableDefaultItems
property to false
.
For information about non-WPF-specific project settings, see MSBuild reference for .NET SDK projects.
The UseWPF
property controls whether or not to include references to WPF libraries. This setting also alters the MSBuild pipeline to correctly process a WPF project and related files. The default value is false
. Set the UseWPF
property to true
to enable WPF support. You can only target the Windows platform when this property is enabled.
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
When this property is set to true
, .NET projects automatically import the .NET Desktop SDK.
The EnableDefaultApplicationDefinition
property controls whether ApplicationDefinition
items are implicitly included in the project. The default value is true
. Set the EnableDefaultApplicationDefinition
property to false
to disable the implicit file inclusion.
<PropertyGroup>
<EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>
</PropertyGroup>
This property requires that the EnableDefaultItems
property is set to true
, which is the default setting.
The EnableDefaultPageItems
property controls whether Page
items, which are .xaml files, are implicitly included in the project. The default value is true
. Set the EnableDefaultPageItems
property to false
to disable the implicit file inclusion.
<PropertyGroup>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>
This property requires that the EnableDefaultItems
property is set to true
, which is the default setting.
For information about non-WinForms-specific project properties, see MSBuild reference for .NET SDK projects.
The ApplicationDefaultFont
property specifies custom font information to be applied application-wide. It controls whether or not the source-generated ApplicationConfiguration.Initialize()
API emits a call to the Application.SetDefaultFont(Font) method.
The default value is an empty string, and it means the application default font is sourced from the Control.DefaultFont property.
A non-empty value must conform to a format equivalent to the output of the FontConverter.ConvertTo
method invoked with the invariant culture (that is, list separator=,
and decimal separator=.
). The format is: name, size[units[, style=style1[, style2, ...]]]
.
<PropertyGroup>
<ApplicationDefaultFont>Calibri, 11pt, style=regular</ApplicationDefaultFont>
</PropertyGroup>
This property is supported by .NET 6 and later versions, and Visual Studio 2022 and later versions.
The ApplicationHighDpiMode
property specifies the application-wide default for the high DPI mode. It controls the argument of the Application.SetHighDpiMode(HighDpiMode) method emitted by the source-generated ApplicationConfiguration.Initialize()
API.
The default value is SystemAware
.
<PropertyGroup>
<ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
</PropertyGroup>
The ApplicationHighDpiMode
can be set to one of the HighDpiMode enum values:
Value | Description |
---|---|
DpiUnaware |
The application window doesn't scale for DPI changes and always assumes a scale factor of 100%. |
DpiUnawareGdiScaled |
Similar to DpiUnaware , but improves the quality of GDI/GDI+ based content. |
PerMonitor |
The window checks for DPI when it's created and adjusts scale factor when the DPI changes. |
PerMonitorV2 |
Similar to PerMonitor , but enables child window DPI change notification, improved scaling of comctl32 controls, and dialog scaling. |
SystemAware |
Default if not specified. The window queries for the DPI of the primary monitor once and uses this value for the application on all monitors. |
This property is supported by .NET 6 and later versions.
The ApplicationUseCompatibleTextRendering
property specifies the application-wide default for the UseCompatibleTextRendering
property defined on certain controls. It controls the argument of the Application.SetCompatibleTextRenderingDefault(Boolean) method emitted by the source-generated ApplicationConfiguration.Initialize()
API.
The default value is false
.
<PropertyGroup>
<ApplicationUseCompatibleTextRendering>true</ApplicationUseCompatibleTextRendering>
</PropertyGroup>
This property is supported by .NET 6 and later versions.
The ApplicationVisualStyles
property specifies the application-wide default for enabling visual styles. It controls whether or not the source-generated ApplicationConfiguration.Initialize()
API emits a call to Application.EnableVisualStyles().
The default value is true
.
<PropertyGroup>
<ApplicationVisualStyles>true</ApplicationVisualStyles>
</PropertyGroup>
This property is supported by .NET 6 and later versions.
The UseWindowsForms
property controls whether or not your application is built to target Windows Forms. This property alters the MSBuild pipeline to correctly process a Windows Forms project and related files. The default value is false
. Set the UseWindowsForms
property to true
to enable Windows Forms support. You can only target the Windows platform when this setting is enabled.
<PropertyGroup>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
When this property is set to true
, .NET projects automatically import the .NET Desktop SDK.
Обратна връзка за .NET
.NET е проект с отворен код. Изберете връзка, за да предоставите обратна връзка:
Събитие
Създаване на интелигентни приложения
17.03, 23 ч. - 21.03, 23 ч.
Присъединете се към поредицата срещи, за да изградите мащабируеми AI решения, базирани на реални случаи на употреба с колеги разработчици и експерти.
Регистрирайте се сега