Справочник по MSBuild для проектов пакета SDK для классических приложений .NET
Эта страница содержит ссылку на свойства и элементы MSBuild, используемые для настройки проектов Windows Forms (WinForms) и Windows Presentation Foundation (WPF) с помощью пакета SDK для классических приложений .NET.
Примечание.
В этой статье приведено подмножество свойств MSBuild для пакета SDK для .NET, поскольку он связан с классическими приложениями. Список полезных свойств для проектов .NET см. в статье Справочник по MSBuild для проектов пакета SDK для .NET. Список стандартных свойств см. в статье Общие свойства MSBuild.
Включение пакета SDK для классических приложений .NET
Чтобы использовать WinForms или WPF, укажите следующие параметры в файле проекта WinForms или WPF:
- Выполните нацеливание для
Microsoft.NET.Sdk
пакета SDK для .NET. Дополнительные сведения см. в разделе Файлы проекта. - Задайте
TargetFramework
для конкретной целевой платформы Windows моникер, напримерnet8.0-windows
. - При необходимости добавьте свойство платформы пользовательского интерфейса (или оба):
- Присвойте параметру
UseWPF
значениеtrue
, чтобы импортировать и использовать WPF. - Присвойте параметру
UseWindowsForms
значениеtrue
, чтобы импортировать и использовать WinForms.
- Присвойте параметру
- (Необязательно) Присвойте параметру
OutputType
значениеWinExe
. Этот параметр создает приложение, а не библиотеку. Чтобы создать библиотеку, опустите это свойство.
<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 по умолчанию
Проекты SDK определяют набор правил для неявного включения или исключения файлов из проекта. Эти правила также автоматически устанавливают действие сборки файла. Это поведение отличается от старых проектов, отличных от пакета SDK платформа .NET Framework, которые не имеют правил по умолчанию. В проектах .NET Framework требуется явное объявление того, какие файлы следует включить в проект.
Файлы проектов .NET включают стандартный набор правил для автоматической обработки файлов. Проекты WPF добавляют дополнительные правила.
В следующей таблице показано, какие элементы и стандартные маски включены в пакет SDK для классических приложений .NET и исключены из него, когда свойству проекта UseWPF
задано значение true
:
Элемент | Стандартная маска включения | Стандартная маска исключения | Стандартная маска удаления |
---|---|---|---|
ApplicationDefinition | App.xaml или Application.xaml | Неприменимо | Неприменимо |
Page | **/*.xaml | **/*.пользователь; **/*.*proj; **/*.sln; **/*.vssscc Любой XAML, определенный ApplicationDefinition |
Неприменимо |
None | Неприменимо | Неприменимо | **/*.xaml |
Ниже приведены параметры включения и исключения по умолчанию для всех типов проектов. Дополнительные сведения см. в разделе Включения и исключения по умолчанию.
Элемент | Стандартная маска включения | Стандартная маска исключения | Стандартная маска удаления |
---|---|---|---|
Compile | **/*.cs; **/*.vb (или другие расширения языка) | **/*.пользователь; **/*.*proj; **/*.sln; **/*.vssscc | Неприменимо |
EmbeddedResource | **/*.resx | **/*.пользователь; **/*.*proj; **/*.sln; **/*.vssscc | Неприменимо |
None | **/* | **/*.пользователь; **/*.*proj; **/*.sln; **/*.vssscc | **/*.cs; **/*.resx |
Ошибки, связанные с повторяющимися элементами
Если вы явно добавили файлы в проект или используете стандартные маски XAML для автоматического включения файлов в проект, может возникать одна из следующих ошибок:
- Включены дублирующиеся элементы "ApplicationDefinition".
- Включены дублирующиеся элементы "Page".
Эти ошибки являются результатом неявного включения стандартных масок, конфликтующих с вашими настройками. Чтобы обойти эту проблему, задайте параметру EnableDefaultApplicationDefinition
или EnableDefaultPageItems
значение false
. При задании этих значений эти значения false
возвращаются к поведению предыдущих пакетов SDK, в которых необходимо явно определить глобы по умолчанию или файлы для включения в проект.
Все неявные включения можно полностью отключить, установив для свойства EnableDefaultItems
значение false
.
Параметры WPF
Дополнительные сведения о параметрах проектов, отличных от WPF, см. в разделе Справочник по MSBuild для проектов пакета SDK для .NET.
UseWPF
Свойство UseWPF
определяет, следует ли включать ссылки на библиотеки WPF. Этот параметр также изменяет конвейер MSBuild для правильной обработки проекта WPF и связанных файлов. Значение по умолчанию — false
. Задайте для свойства UseWPF
значение true
, чтобы включить поддержку WPF. Выполнить нацеливание на платформу Windows можно только в том случае, если это свойство включено.
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
Если для этого свойства задано true
значение , проекты .NET автоматически импортируют пакет SDK для .NET Desktop.
EnableDefaultApplicationDefinition
Свойство EnableDefaultApplicationDefinition
определяет, включаются ли в проект неявным образом элементы ApplicationDefinition
. Значение по умолчанию — true
. Задайте значение EnableDefaultApplicationDefinition
для свойства false
, чтобы отключить неявные включения файлов.
<PropertyGroup>
<EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>
</PropertyGroup>
Для этого свойства требуется, чтобы EnableDefaultItems
для свойства задано true
значение , которое является параметром по умолчанию.
EnableDefaultPageItems
Свойство EnableDefaultPageItems
определяет, включаются ли в проект неявным образом элементы Page
, которые являются файлами .xaml. Значение по умолчанию — true
. Задайте значение EnableDefaultPageItems
для свойства false
, чтобы отключить неявные включения файлов.
<PropertyGroup>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>
Для этого свойства требуется, чтобы EnableDefaultItems
для свойства задано true
значение , которое является параметром по умолчанию.
Параметры Windows Forms
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
- UseWindowsForms
Дополнительные сведения о свойствах проектов, отличных от WinForms, см. в разделе Справочник по MSBuild для проектов пакета SDK для .NET.
ApplicationDefaultFont
Свойство ApplicationDefaultFont
указывает сведения о пользовательских шрифтах, которые будут применены ко всему приложению. Оно определяет, будет ли созданный код API ApplicationConfiguration.Initialize()
выполнять вызов метода Application.SetDefaultFont(Font).
Значение по умолчанию — пустая строка, то есть источником шрифта по умолчанию для приложения является свойство Control.DefaultFont.
Непустое значение должно иметь формат, эквивалентный выходным данным метода FontConverter.ConvertTo
, вызванного с помощью инвариантного языка и региональных параметров (то есть используются разделитель списков ,
и разделитель десятичных знаков .
). Формат: name, size[units[, style=style1[, style2, ...]]]
.
<PropertyGroup>
<ApplicationDefaultFont>Calibri, 11pt, style=regular</ApplicationDefaultFont>
</PropertyGroup>
Это свойство поддерживается в .NET 6 и более поздних версий, а также в Visual Studio 2022 и более поздних версий.
ApplicationHighDpiMode
Свойство ApplicationHighDpiMode
задает значение по умолчанию на уровне приложения для режима высокого разрешения. Оно управляет аргументом метода Application.SetHighDpiMode(HighDpiMode), который будет применять созданный код API ApplicationConfiguration.Initialize()
.
Значение по умолчанию — SystemAware
.
<PropertyGroup>
<ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
</PropertyGroup>
Для ApplicationHighDpiMode
можно задать одно из значений перечисления HighDpiMode:
значение | Описание |
---|---|
DpiUnaware |
Окно приложения не масштабируется для изменений DPI и всегда предполагает коэффициент масштабирования 100 %. |
DpiUnawareGdiScaled |
Аналогично DpiUnaware , но улучшает качество содержимого на основе GDI/GDI+. |
PerMonitor |
При создании окна проверяется значение DPI, а коэффициент масштабирования корректируется при изменении DPI. |
PerMonitorV2 |
Аналогично PerMonitor , но предусматривает отправку уведомлений об изменении значения DPI дочернего окна, улучшенное масштабирование элементов управления comctl32 и масштабирование диалоговых окон. |
SystemAware |
Значение по умолчанию, если не указано. Окно запрашивает DPI основного монитора один раз и использует это значение для приложения на всех мониторах. |
Это свойство поддерживается в .NET 6 и более поздних версий.
ApplicationUseCompatibleTextRendering
Свойство ApplicationUseCompatibleTextRendering
задает значения по умолчанию на уровне приложения для свойства UseCompatibleTextRendering
, определенного для некоторых элементов управления. Оно управляет аргументом метода Application.SetCompatibleTextRenderingDefault(Boolean), который будет применять созданный код API ApplicationConfiguration.Initialize()
.
Значение по умолчанию — false
.
<PropertyGroup>
<ApplicationUseCompatibleTextRendering>true</ApplicationUseCompatibleTextRendering>
</PropertyGroup>
Это свойство поддерживается в .NET 6 и более поздних версий.
ApplicationVisualStyles
Свойство ApplicationVisualStyles
задает значение по умолчанию на уровне приложения для включения визуальных стилей. Оно определяет, будет ли созданный код API ApplicationConfiguration.Initialize()
выполнять вызов Application.EnableVisualStyles().
Значение по умолчанию — true
.
<PropertyGroup>
<ApplicationVisualStyles>true</ApplicationVisualStyles>
</PropertyGroup>
Это свойство поддерживается в .NET 6 и более поздних версий.
UseWindowsForms
Свойство UseWindowsForms
определяет, предназначено ли приложение для Windows Forms. Это свойство изменяет конвейер MSBuild соответствующим образом для правильной обработки Windows Forms проекта и связанных файлов. Значение по умолчанию — false
. Задайте для свойства UseWindowsForms
значение true
, чтобы включить поддержку Windows Forms. Выполнить нацеливание на платформу Windows можно только в том случае, если этот параметр включен.
<PropertyGroup>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
Если для этого свойства задано true
значение , проекты .NET автоматически импортируют пакет SDK для .NET Desktop.