.NET デスクトップ SDK プロジェクトの MSBuild リファレンス
このpageは、.NET Desktop SDK を使用して Windows フォーム (WinForms) および Windows Presentation Foundation (WPF) プロジェクトを構成するために使用する MSBuild プロパティと項目のリファレンスです。
Note
この記事では、デスクトップ アプリに関連する .NET SDK の MSBuild プロパティのサブセットについて説明します。 .NET SDK 固有の一般的な MSBuild プロパティの一覧については、「.NET SDK プロジェクトの MSBuild リファレンス」を参照してください。 一般的な MSBuild プロパティの一覧については、「MSBuild プロジェクトの共通プロパティ」を参照してください。
.NET デスクトップ SDK を有効にする
WinForms または WPF を使用するには、WinForms または WPF プロジェクトのプロジェクト ファイルで次の設定を指定します。
- .NET SDK
Microsoft.NET.Sdk
をターゲットとする。 詳細については、「プロジェクト ファイル」を参照してください。 TargetFramework
を Windows 固有のターゲット フレームワーク モニカー (net8.0-windows
など) に設定します。- UI フレームワーク プロパティ (または必要に応じて両方) を追加します。
- WPF をインポートして使用する場合は、
UseWPF
をtrue
に設定する。 - WinForms をインポートして使用する場合は、
UseWindowsForms
をtrue
に設定する。
- WPF をインポートして使用する場合は、
- (省略可能)
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 プロジェクトではさらに規則を追加します。
次の表には、UseWPF
プロジェクト プロパティが true
に設定されている場合に、.NET デスクトップ SDK に含まれる、および除外される要素と glob が示されています。
要素 | 含まれる glob | 除外される glob | glob の削除 |
---|---|---|---|
ApplicationDefinition | App.xaml または Application.xaml | 該当なし | 該当なし |
Page | **/*.xaml | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc ApplicationDefinition によって定義されたすべての XAML |
該当なし |
None | 該当なし | 該当なし | **/*.xaml |
以下は、すべてのプロジェクトの種類について、既定で含まれるものと除外されるものの設定です。 詳細については、「既定で含まれるものと除外されるもの」を参照してください。
要素 | 含まれる glob | 除外される glob | glob の削除 |
---|---|---|---|
Compile | **/*.cs; **/*.vb (or other language extensions) | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | 該当なし |
EmbeddedResource | **/*.resx | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | 該当なし |
None | **/* | **/*.user; **/*.*proj; **/*.sln; **/*.vssscc | **/*.cs; **/*.resx |
"重複する" 項目に関するエラー
ファイルをプロジェクトに明示的に追加した場合、またはプロジェクトにファイルを自動的に含めるように XAML glob が設定されている場合は、次のいずれかのエラーが発生する可能性があります。
- 重複する 'ApplicationDefinition' 項目が含まれていました。
- 重複する 'Page' 項目が含まれていました。
これらのエラーは、ご自分の設定と競合する暗黙的な "含まれる" glob の結果です。 この問題を回避するには、EnableDefaultApplicationDefinition
または EnableDefaultPageItems
を false
に設定します。 これらの値を false
に設定すると、プロジェクトに含める既定の glob またはファイルを明示的に定義する必要があった以前の SDK の動作に戻ります。
EnableDefaultItems
プロパティを false
に設定することにより、暗黙的な含まれるものを完全に無効にすることができます。
WPF の設定
WPF 固有ではないプロジェクト設定については、「.NET SDK プロジェクトの MSBuild リファレンス」を参照してください。
UseWPF
UseWPF
プロパティにより、WPF ライブラリへの参照を含めるかどうかが制御されます。 この設定では、WPF プロジェクトと関連ファイルを正しく処理するように MSBuild パイプラインも変更されます。 既定値は false
です。 UseWPF
プロパティを true
に設定して、WPF のサポートを有効にします。 このプロパティが有効になっている場合にのみ、Windows プラットフォームをターゲットにすることができます。
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
このプロパティを true
に設定すると、.NET プロジェクトは自動的に .NET Desktop SDKをインポートします。
EnableDefaultApplicationDefinition
EnableDefaultApplicationDefinition
プロパティにより、ApplicationDefinition
項目がプロジェクトに暗黙的に含まれるかどうかが制御されます。 既定値は true
です。 EnableDefaultApplicationDefinition
プロパティを false
に設定して、暗黙的なファイルの組み込みを無効にします。
<PropertyGroup>
<EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>
</PropertyGroup>
このプロパティは、EnableDefaultItems
プロパティが true
(既定の設定) に設定されている必要があります。
EnableDefaultPageItems
EnableDefaultPageItems
プロパティにより、 .xaml ファイルである Page
項目がプロジェクトに暗黙的に含まれるかどうかが制御されます。 既定値は true
です。 EnableDefaultPageItems
プロパティを false
に設定して、暗黙的なファイルの組み込みを無効にします。
<PropertyGroup>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>
このプロパティは、EnableDefaultItems
プロパティが true
(既定の設定) に設定されている必要があります。
Windows フォームの設定
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
- UseWindowsForms
WinForms 固有ではないプロジェクト プロパティについては、「.NET SDK プロジェクトの MSBuild リファレンス」を参照してください。
ApplicationDefaultFont
ApplicationDefaultFont
プロパティによって、アプリケーション全体に適用されるカスタム フォント情報が指定されます。 これにより、ソースで生成された ApplicationConfiguration.Initialize()
API が 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
プロパティによって、高 DPI モードのアプリケーション全体の既定値が指定されます。 これにより、ソースで生成された ApplicationConfiguration.Initialize()
API によって生成される Application.SetHighDpiMode(HighDpiMode) メソッドの引数が制御されます。
既定値は SystemAware
です。
<PropertyGroup>
<ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
</PropertyGroup>
ApplicationHighDpiMode
は、いずれかの HighDpiMode 列挙値に設定できます。
値 | 説明 |
---|---|
DpiUnaware |
アプリケーション ウィンドウは DPI の変更に合わせてスケーリングせず、常に 100% の倍率を想定します。 |
DpiUnawareGdiScaled |
DpiUnaware に似ていますが、GDI/GDI+ ベースのコンテンツの品質が向上します。 |
PerMonitor |
このウィンドウでは、作成時に DPI が確認され、DPI が変化したときに倍率が調整されます。 |
PerMonitorV2 |
PerMonitor に似ていますが、子ウィンドウの DPI 変更通知、comctl32.dll コントロールの拡大縮小の改善、およびダイアログの拡大縮小を使用できます。 |
SystemAware |
指定されない場合は既定値。 ウィンドウはプライマリ モニターの DPI を 1 回照会し、すべてのモニター上のアプリケーションに対してこの値を使用します。 |
このプロパティは、.NET 6 以降のバージョンでサポートされます。
ApplicationUseCompatibleTextRendering
ApplicationUseCompatibleTextRendering
プロパティによって、特定のコントロールで定義された UseCompatibleTextRendering
プロパティにアプリケーション全体で有効な既定値が指定されます。 これにより、ソースで生成された ApplicationConfiguration.Initialize()
API によって生成される Application.SetCompatibleTextRenderingDefault(Boolean) メソッドの引数が制御されます。
既定値は false
です。
<PropertyGroup>
<ApplicationUseCompatibleTextRendering>true</ApplicationUseCompatibleTextRendering>
</PropertyGroup>
このプロパティは、.NET 6 以降のバージョンでサポートされます。
ApplicationVisualStyles
ApplicationVisualStyles
プロパティによって、視覚スタイルを実現するためのアプリケーション全体の既定値が指定されます。 これにより、ソースで生成された ApplicationConfiguration.Initialize()
API が Application.EnableVisualStyles() への呼び出しを生成するかどうかが制御されます。
既定値は true
です。
<PropertyGroup>
<ApplicationVisualStyles>true</ApplicationVisualStyles>
</PropertyGroup>
このプロパティは、.NET 6 以降のバージョンでサポートされます。
UseWindowsForms
UseWindowsForms
プロパティにより、Windows フォームをターゲットとするようにアプリケーションがビルドされるかどうかが制御されます。 このプロパティにより、Windows フォーム プロジェクトと関連ファイルを正しく処理するために MSBuild パイプラインが変更されます。 既定値は false
です。 UseWindowsForms
プロパティを true
に設定して、Windows フォームのサポートを有効にします。 この設定が有効になっている場合にのみ、Windows プラットフォームをターゲットにすることができます。
<PropertyGroup>
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
このプロパティを true
に設定すると、.NET プロジェクトは自動的に .NET Desktop SDKをインポートします。
関連項目
.NET