Informations de référence sur MSBuild pour les projets SDK .NET Desktop
Il s’agit page d’une référence pour les propriétés et éléments MSBuild que vous utilisez pour configurer des projets Windows Forms (WinForms) et Windows Presentation Foundation (WPF) avec le Kit de développement logiciel (SDK) .NET Desktop.
Remarque
Cet article documente un sous-ensemble des propriétés MSBuild pour le SDK .NET, car il est lié aux applications de bureau. Pour obtenir la liste des propriétés MSBuild spécifiques au SDK .NET courantes, consultez la référence MSBuild pour les projets SDK.NET. Pour obtenir la liste des propriétés MSBuild courantes, consultez Propriétés MSBuild communes.
Activer le SDK .NET Desktop
Pour utiliser WinForms ou WPF, spécifiez les paramètres suivants dans le fichier projet de votre projet WinForms ou WPF :
- Ciblez le SDK .NET
Microsoft.NET.Sdk
. Pour plus d’informations, consultez Fichiers projet. - Défini
TargetFramework
sur un moniker de framework cible spécifique à Windows, tel quenet8.0-windows
. - Ajoutez une propriété d’infrastructure d’interface utilisateur (ou les deux, si nécessaire) :
- Définissez la valeur de
UseWPF
surtrue
pour importer et utiliser WPF. - Définissez la valeur de
UseWindowsForms
surtrue
pour importer et utiliser WinForms.
- Définissez la valeur de
- (Facultatif) Définissez la valeur de
OutputType
surWinExe
. Ce paramètre produit une application plutôt qu’une bibliothèque. Pour produire une bibliothèque, omettez cette propriété.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
<!-- and/or -->
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
</Project>
La valeur par défaut de WPF inclut et exclut
Les projets SDK définissent un ensemble de règles pour inclure ou exclure implicitement des fichiers du projet. Ces règles définissent également automatiquement l’action de génération du fichier. Ce comportement est différent des anciens projets .NET Framework non SDK, qui n’ont pas de règles d’inclusion ou d’exclusion par défaut. Les projets .NET Framework vous obligent à déclarer explicitement les fichiers à inclure dans le projet.
Les fichiers projet .NET incluent un ensemble standard de règles pour le traitement automatique des fichiers. Les projets WPF ajoutent des règles supplémentaires.
Le tableau suivant indique quels éléments et globs sont inclus et exclus dans le SDK .NET Desktop lorsque la propriété de projet UseWPF
est définie sur true
:
Élément | Inclure Glob | Exclure Glob | Supprimer Glob |
---|---|---|---|
ApplicationDefinition | App.xaml ou Application.xaml | N/A | N/A |
Page | **/*.xaml | **/*.user, **/*.*proj, **/*.sln, **/*.vssscc Tout XAML défini par ApplicationDefinition |
N/A |
None | N/A | N/A | **/*.xaml |
Voici les paramètres d’inclusion et d’exclusion par défaut pour tous les types de projet. Pour plus d’informations, consultez Inclut et exclut par défaut.
Élément | Inclure Glob | Exclure Glob | Supprimer Glob |
---|---|---|---|
Compile | **/*.Cs, **/*.vb (ou d’autres extensions de langage) | **/*.user, **/*.*proj, **/*.sln, **/*.vssscc | N/A |
EmbeddedResource | **/*.resx | **/*.user, **/*.*proj, **/*.sln, **/*.vssscc | N/A |
None | **/* | **/*.user, **/*.*proj, **/*.sln, **/*.vssscc | **/*.cs, **/*.resx |
Erreurs liées aux éléments « dupliqués »
Si vous avez ajouté explicitement des fichiers à votre projet ou que vous disposez de globs XAML pour inclure automatiquement des fichiers dans votre projet, vous pouvez obtenir l’une des erreurs suivantes :
- Les éléments « ApplicationDefinition » dupliqués ont été inclus.
- Les éléments « Page » dupliqués ont été inclus.
Ces erreurs sont le résultat des globs Include implicites en conflit avec vos paramètres. Pour contourner ce problème, définissez EnableDefaultApplicationDefinition
ou EnableDefaultPageItems
sur la valeur false
. Définition de ces valeurs pour false
rétablir le comportement des kits SDK précédents où vous deviez définir explicitement les globs par défaut ou les fichiers à inclure dans votre projet.
Vous pouvez désactiver complètement tous les éléments implicites en définissant la propriété EnableDefaultItems
sur false
.
Paramètres WPF
Pour plus d’informations sur les paramètres de projet non spécifiques à WPF, consultez Référence MSBuild pour les projets du SDK .NET.
UseWPF
La propriété UseWPF
contrôle s’il faut inclure ou non des références aux bibliothèques WPF. Ce paramètre modifie également le pipeline MSBuild pour traiter correctement un projet WPF et des fichiers associés. La valeur par défaut est false
. Définissez la propriété UseWPF
sur true
pour activer la prise en charge de WPF. Vous ne pouvez cibler la plateforme Windows que lorsque cette propriété est activée.
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
Lorsque cette propriété est définie true
sur , les projets .NET importent automatiquement le Kit de développement logiciel (SDK) .NET Desktop.
EnableDefaultApplicationDefinition
La propriété EnableDefaultApplicationDefinition
contrôle si les éléments ApplicationDefinition
sont implicitement inclus dans le projet. La valeur par défaut est true
. Définissez la propriété EnableDefaultApplicationDefinition
sur false
pour désactiver l’inclusion implicite du fichier.
<PropertyGroup>
<EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>
</PropertyGroup>
Cette propriété nécessite que la EnableDefaultItems
propriété soit définie sur true
, qui est le paramètre par défaut.
EnableDefaultPageItems
La propriété EnableDefaultPageItems
contrôle si les éléments Page
, qui sont des fichiers .xaml, sont implicitement inclus dans le projet. La valeur par défaut est true
. Définissez la propriété EnableDefaultPageItems
sur false
pour désactiver l’inclusion implicite du fichier.
<PropertyGroup>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>
Cette propriété nécessite que la EnableDefaultItems
propriété soit définie sur true
, qui est le paramètre par défaut.
Paramètres Windows Forms
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
- UseWindowsForms
Pour plus d’informations sur les propriétés de projet spécifiques à WinForms, consultez Référence MSBuild pour les projets SDK .NET.
ApplicationDefaultFont
La propriété ApplicationDefaultFont
spécifie les informations de police personnalisées à appliquer à l’échelle de l’application. Elle contrôle si l’API générée par ApplicationConfiguration.Initialize()
la source émet ou non un appel à la méthode Application.SetDefaultFont(Font).
La valeur par défaut est une chaîne vide, ce qui signifie que la police par défaut de l’application est source de la propriété Control.DefaultFont.
Une valeur non vide doit être conforme à un format équivalent à la sortie de la méthode FontConverter.ConvertTo
appelée avec la culture invariante (autrement dit, séparateur de liste=,
et séparateur décimal=.
). Le format est : name, size[units[, style=style1[, style2, ...]]]
.
<PropertyGroup>
<ApplicationDefaultFont>Calibri, 11pt, style=regular</ApplicationDefaultFont>
</PropertyGroup>
Cette propriété est prise en charge par .NET 6 et versions ultérieures et Visual Studio 2022 et versions ultérieures.
ApplicationHighDpiMode
La propriété ApplicationHighDpiMode
spécifie la valeur par défaut à l’échelle de l’application pour le mode ppp élevé. Il contrôle l’argument de la méthode Application.SetHighDpiMode(HighDpiMode) émise par l’API ApplicationConfiguration.Initialize()
générée par la source.
La valeur par défaut est SystemAware
.
<PropertyGroup>
<ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
</PropertyGroup>
La valeur ApplicationHighDpiMode
peut être définie sur l’une des valeurs d’énumération HighDpiMode :
Valeur | Description |
---|---|
DpiUnaware |
La fenêtre d’application ne se met pas à l’échelle pour les modifications DPI et suppose toujours un facteur d’échelle de 100 %. |
DpiUnawareGdiScaled |
Semblable à DpiUnaware , mais améliore la qualité du contenu GDI/GDI+. |
PerMonitor |
La fenêtre vérifie la résolution lorsqu’elle est créée et ajuste le facteur d’échelle lorsque la résolution est modifiée. |
PerMonitorV2 |
Semblable à PerMonitor , mais active la notification de changement de résolution de la fenêtre enfant, une meilleure mise à l’échelle des commandes comctl32 et la mise à l’échelle des boîtes de dialogue. |
SystemAware |
Par défaut (si non spécifié). Les requêtes de fenêtre pour l’ppp du moniteur principal une fois et utilisent cette valeur pour l’application sur tous les moniteurs. |
Cette propriété est prise en charge par .NET 6 et les versions ultérieures.
ApplicationUseCompatibleTextRendering
La propriété ApplicationUseCompatibleTextRendering
indique à les informations par défaut de l’application pour la propriété UseCompatibleTextRendering
définie sur certains contrôles. Il contrôle l’argument de la méthode Application.SetCompatibleTextRenderingDefault(Boolean) émise par l’API ApplicationConfiguration.Initialize()
générée par la source.
La valeur par défaut est false
.
<PropertyGroup>
<ApplicationUseCompatibleTextRendering>true</ApplicationUseCompatibleTextRendering>
</PropertyGroup>
Cette propriété est prise en charge par .NET 6 et les versions ultérieures.
ApplicationVisualStyles
La propriété ApplicationVisualStyles
spécifie la valeur par défaut à l’échelle de l’application pour activer les styles visuels. Elle contrôle si l’API ApplicationConfiguration.Initialize()
générée par la source émet un appel à Application.EnableVisualStyles().
La valeur par défaut est true
.
<PropertyGroup>
<ApplicationVisualStyles>true</ApplicationVisualStyles>
</PropertyGroup>
Cette propriété est prise en charge par .NET 6 et les versions ultérieures.
UseWindowsForms
La propriété UseWindowsForms
contrôle si votre application est générée ou non pour cibler Windows Forms. Cette propriété modifie le pipeline MSBuild pour traiter correctement un projet Windows Forms et des fichiers associés. La valeur par défaut est false
. Définissez la propriété true
sur UseWindowsForms
pour activer la prise en charge de Windows Forms. Vous ne pouvez cibler la plateforme Windows que lorsque ce paramètre est activé.
<PropertyGroup>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
Lorsque cette propriété est définie true
sur , les projets .NET importent automatiquement le Kit de développement logiciel (SDK) .NET Desktop.