Share via


Informations de référence sur MSBuild pour les projets SDK .NET Desktop

Cette page est 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 SDK .NET Desktop.

Notes

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 que net8.0-windows.
  • Ajoutez une propriété d’infrastructure d’interface utilisateur (ou les deux, si nécessaire) :
    • Définissez la valeur de UseWPF sur true pour importer et utiliser WPF.
    • Définissez la valeur de UseWindowsForms sur true pour importer et utiliser WinForms.
  • (Facultatif) Définissez la valeur de OutputType sur WinExe. 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

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 truesur , les projets .NET 5+ 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

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 truesur , les projets .NET 5+ importent automatiquement le Kit de développement logiciel (SDK) .NET Desktop.

Paramètres partagés

DisableWinExeOutputInference

S’applique au SDK .NET 5 et versions ultérieures.

Lorsqu’une application a la valeur Exe définie pour la propriété OutputType, une fenêtre de console est créée si l’application ne s’exécute pas à partir d’une console. Ce comportement n’est généralement pas souhaitable pour une application de bureau Windows. Avec la valeur WinExe, la fenêtre de la console n’est pas créée. À compter du SDK .NET 5, la valeur Exe est automatiquement transformée en WinExe.

La propriété DisableWinExeOutputInference rétablit le comportement de traitement Exe comme WinExe. Définissez cette valeur sur true pour restaurer le comportement de la valeur de propriété OutputType de Exe. La valeur par défaut est false.

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

Voir aussi