.net masaüstü SDK projeleri için MSBuild başvurusu

bu sayfa, .net masaüstü SDK ile Windows Forms (WinForms) ve Windows Presentation Foundation (WPF) projelerini yapılandırmak için kullandığınız MSBuild özellikleri ve öğeleri için bir başvurudur.

Not

bu makale, masaüstü uygulamalarıyla ilişkili olarak .net SDK MSBuild özelliklerinin bir alt kümesini belgeler. ortak .net sdk 'ya özgü MSBuild özelliklerinin bir listesi için bkz. .net sdk projeleri için MSBuild başvurusu. ortak MSBuild özelliklerinin bir listesi için bkz. ortak MSBuild özellikleri.

.NET masaüstü SDK 'sını etkinleştir

WinForms veya WPF kullanmak için, proje dosyanızı yapılandırın.

.NET 5 +

WinForms veya WPF projenizin proje dosyasında aşağıdaki ayarları belirtin:

  • .NET SDK 'sını hedefleyin Microsoft.NET.Sdk . daha fazla bilgi için bkz. Project dosyaları.
  • gibi TargetFramework Windows özgü bir hedef çerçeve adına ayarlanır net6.0-windows .
  • UI çerçevesi özelliği ekleyin (veya gerekirse her ikisi de):
    • UseWPFWPF 'yi true içeri ve daha sonra kullanmak için olarak ayarlayın.
    • UseWindowsForms true WinForms içeri aktarıp kullanmak için olarak ayarlayın.
  • Seçim OutputType Olarak ayarlayın WinExe . Bu, bir kitaplık yerine bir uygulama oluşturur. Bir kitaplık oluşturmak için bu özelliği atlayın.
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>

    <UseWPF>true</UseWPF>
    <!-- and/or -->
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

.NET Core 3.1

WinForms veya WPF projenizin proje dosyasında aşağıdaki ayarları belirtin:

  • .NET SDK 'sını hedefleyin Microsoft.NET.Sdk.WindowsDesktop . daha fazla bilgi için bkz. Project dosyaları.
  • TargetFrameworkOlarak ayarlayın netcoreapp3.1 .
  • UI çerçevesi özelliği ekleyin (veya gerekirse her ikisi de):
    • UseWPFWPF 'yi true içeri ve daha sonra kullanmak için olarak ayarlayın.
    • UseWindowsForms true WinForms içeri aktarıp kullanmak için olarak ayarlayın.
  • Seçim OutputType Olarak ayarlayın WinExe . Bu, bir kitaplık yerine bir uygulama oluşturur. Bir kitaplık oluşturmak için bu özelliği atlayın.
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>

    <UseWPF>true</UseWPF>
    <!-- and/or -->
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

WPF varsayılan içerir ve dışlar

SDK projeleri, dosyaları projeden örtük olarak dahil etmek veya hariç tutmak için bir kurallar kümesi tanımlar. Bu kurallar, dosyanın derleme eylemini de otomatik olarak ayarlar. bu, varsayılan içerme veya dışlama kuralları olmayan, daha eski SDK olmayan .NET Framework projelerinin aksine. .NET Framework projeler, projeye hangi dosyaların ekleneceğini açıkça bildirmeniz gerekir.

.NET proje dosyaları, dosyaları otomatik olarak işlemeye yönelik Standart bir kurallar kümesi içerir. WPF projeleri ek kurallar ekler.

Aşağıdaki tabloda, UseWPF Proje özelliği olarak ayarlandığında .net masaüstü SDK 'sına dahil edilen ve çıkarılan öğelerin ve genelleştirmeler gösterilmektedir true :

Öğe Glob 'yi dahil et Glob 'yi hariç tut Glob 'yi kaldır
ApplicationDefinition App.xaml veya Application.xaml Yok Yok
Page **/*. xaml **/*kullanıcısını **/*.* PROJ **/*. sln **/*. vssscc
Tarafından tanımlanan XAML ApplicationDefinition
Yok
None Yok Yok **/*. xaml

Tüm proje türleri için varsayılan içerme ve dışlama ayarları aşağıda verilmiştir. Daha fazla bilgi için bkz. varsayılan içerme ve dışladığı.

Öğe Glob 'yi dahil et Glob 'yi hariç tut Glob 'yi kaldır
Compile **/*.cs **/*. vb (veya diğer dil uzantıları) **/*kullanıcısını **/*.* PROJ **/*. sln **/*. vssscc Yok
EmbeddedResource **/*. resx **/*kullanıcısını **/*.* PROJ **/*. sln **/*. vssscc Yok
None **/* **/*kullanıcısını **/*.* PROJ **/*. sln **/*. vssscc **/*.cs **/*. resx

Projenize açıkça dosya eklediyseniz ya da XAML genelleştirmeler otomatik olarak dosya eklemek istiyorsanız, aşağıdaki hatalardan birini alabilirsiniz:

  • Yinelenen ' ApplicationDefinition ' öğeleri eklendi.
  • Yinelenen ' Page ' öğeleri eklendi.

Bu hatalar, ayarlarınızdaki örtük ekleme genelleştirmeler çelişen bir sonucudur. Bu sorunu geçici olarak çözmek için ya da EnableDefaultApplicationDefinition EnableDefaultPageItems olarak ayarlayın false . Bu değerleri false , projenizde varsayılan genelleştirmeler açıkça tanımlamanız gereken önceki SDK 'ların davranışına geri dönmek veya projeye dahil edilecek dosyaları açıkça tanımlamanız için ayarlamak.

EnableDefaultItems Özelliğini olarak ayarlayarak tüm örtük eklemeleri tamamen devre dışı bırakabilirsiniz false .

WPF ayarları

WPF 'e özgü olmayan proje ayarları hakkında daha fazla bilgi için bkz. .net SDK projeleri için MSBuild başvurusu.

UseWPF

UseWPFÖZELLIĞI WPF kitaplıklarına başvuruların eklenip eklenmeyeceğini denetler. bu ayrıca MSBuild işlem hattını bir WPF projesini ve ilgili dosyaları doğru şekilde işleyecek şekilde değiştirir. false varsayılan değerdir. UseWPF true WPF desteğini etkinleştirmek için özelliğini olarak ayarlayın. bu özellik etkinleştirildiğinde yalnızca Windows platformunu hedefleyebilirsiniz.

<PropertyGroup>
  <UseWPF>true</UseWPF>
</PropertyGroup>

Bu özellik olarak ayarlandığında true , .NET 5 + projeleri, .net masaüstü SDK 'sınıotomatik olarak içeri aktarır.

.NET Core 3,1 projelerinin, bu özelliği kullanmak için .net masaüstü SDK 'sını açık bir şekilde hedeflemesi gerekir.

EnableDefaultApplicationDefinition

EnableDefaultApplicationDefinitionÖzelliği, ApplicationDefinition öğelerin projeye örtük olarak dahil edilip edilmediğini denetler. true varsayılan değerdir. EnableDefaultApplicationDefinition false Örtük dosya eklemeyi devre dışı bırakmak için özelliğini olarak ayarlayın.

<PropertyGroup>
  <EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>
</PropertyGroup>

Bu özellik, varsayılan ayar olan EnableDefaultItems özelliği özelliğinin olarak ayarlanmasını gerektirir true .

EnableDefault Page öğeleri

EnableDefaultPageItemsÖzelliği, Page . xaml dosyaları olan öğelerin projeye örtük olarak dahil edilip edilmeyeceğini denetler. true varsayılan değerdir. EnableDefaultPageItems false Örtük dosya eklemeyi devre dışı bırakmak için özelliğini olarak ayarlayın.

<PropertyGroup>
  <EnableDefaultPageItems>false</EnableDefaultPageItems>
</PropertyGroup>

Bu özellik, varsayılan ayar olan EnableDefaultItems özelliği özelliğinin olarak ayarlanmasını gerektirir true .

Windows Forms ayarları

WinForms 'e özgü olmayan proje özellikleri hakkında daha fazla bilgi için bkz. .net SDK projeleri için MSBuild başvurusu.

ApplicationDefaultFont

ApplicationDefaultFontÖzelliği, uygulama genelinde uygulanacak özel yazı tipi bilgilerini belirtir. Kaynak tarafından oluşturulan ApplicationConfiguration.Initialize() API 'nin yönteme bir çağrı yayar olup olmadığını denetler Application.SetDefaultFont(Font) . Varsayılan değer boş bir dizedir ve uygulamanın varsayılan yazı tipinin özelliğinden kaynaklıdır anlamına gelir Control.DefaultFont .

Boş olmayan bir değer, FontConverter.ConvertTo sabit kültür (List separator = , ve Decimal separator =) ile çağrılan yöntemin çıktısına denk bir biçim ile uyumlu olmalıdır . . Biçim şu şekildedir: name, size[units[, style=style1[, style2, ...]]].

<PropertyGroup>
  <ApplicationDefaultFont>Calibri, 11pt, style=regular</ApplicationDefaultFont>
</PropertyGroup>

bu özellik .net 6 ve sonraki sürümleri tarafından desteklenir ve 2022 ve sonraki sürümler Visual Studio.

ApplicationHighDpiMode

ApplicationHighDpiModeÖzelliği, yüksek DPI modu için uygulama genelinde varsayılan değeri belirtir. Application.SetHighDpiMode(HighDpiMode)Kaynak tarafından oluşturulan API tarafından yayılan yöntemin bağımsız değişkenini denetler ApplicationConfiguration.Initialize() . SystemAware varsayılan değerdir.

<PropertyGroup>
  <ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
</PropertyGroup>

, ApplicationHighDpiMode HighDpiMode Enum değerlerinden birine ayarlanabilir:

Değer Açıklama
DpiUnaware Uygulama penceresi DPı değişikliklerini ölçeklenmez ve her zaman %100 ölçek faktörünü kabul etmez.
DpiUnawareGdiScaled buna benzer DpiUnaware ancak gdı/GDI+ tabanlı içeriğin kalitesini geliştirir.
PerMonitor Pencere oluşturulduğunda DPı 'yi denetler ve DPı değiştiğinde ölçek faktörünü ayarlar.
PerMonitorV2 Buna benzer PerMonitor ancak alt pencere DPI değişiklik bildirimine, Comctl32 denetimlerin gelişmiş ölçeklendirilmesine ve iletişim kutusu ölçeklendirilmesine olanak sağlar.
SystemAware Belirtilmemişse varsayılan değer .
Pencere, birincil izleyicinin DPı 'sini bir kez sorgular ve bunu tüm izleyicilerinde uygulama için kullanır.

Bu özellik .NET 6 ve sonraki sürümler tarafından desteklenir.

ApplicationUseCompatibleTextRendering

ApplicationUseCompatibleTextRenderingÖzelliği, UseCompatibleTextRendering Belirli denetimlerde tanımlanan özellik için uygulama genelinde varsayılanı belirtir. Application.SetCompatibleTextRenderingDefault(Boolean)Kaynak tarafından oluşturulan API tarafından yayılan yöntemin bağımsız değişkenini denetler ApplicationConfiguration.Initialize() . false varsayılan değerdir.

<PropertyGroup>
  <ApplicationUseCompatibleTextRendering>true</ApplicationUseCompatibleTextRendering>
</PropertyGroup>

Bu özellik .NET 6 ve sonraki sürümler tarafından desteklenir.

ApplicationVisualStyles

ApplicationVisualStylesÖzelliği, görsel stilleri etkinleştirmek için uygulama genelinde varsayılan bir değer belirtir. Kaynak tarafından oluşturulan ApplicationConfiguration.Initialize() API 'nin öğesine bir çağrı yayar olup olmadığını denetler Application.EnableVisualStyles() . true varsayılan değerdir.

<PropertyGroup>
  <ApplicationVisualStyles>true</ApplicationVisualStyles>
</PropertyGroup>

Bu özellik .NET 6 ve sonraki sürümler tarafından desteklenir.

UseWindowsForms

UseWindowsFormsözelliği, uygulamanızın Windows Forms hedefte oluşturulup oluşturulmayacağını denetler. bu özellik, bir Windows Forms projesini ve ilgili dosyaları doğru şekilde işlemek için MSBuild işlem hattını değiştirir. false varsayılan değerdir. UseWindowsForms true Windows Forms desteğini etkinleştirmek için özelliğini olarak ayarlayın. bu ayar etkinleştirildiğinde yalnızca Windows platformunu hedefleyebilirsiniz.

<PropertyGroup>
  <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>

Bu özellik olarak ayarlandığında true , .NET 5 + projeleri, .net masaüstü SDK 'sınıotomatik olarak içeri aktarır.

.NET Core 3,1 projelerinin, bu özelliği kullanmak için .net masaüstü SDK 'sını açık bir şekilde hedeflemesi gerekir.

Paylaşılan ayarlar

Disablewinexeoutputçıkarımı

.NET 5 SDK ve üzeri için geçerlidir.

Bir uygulama Exe özelliği için ayarlanan değere sahip olduğunda OutputType , uygulama bir konsoldan çalışmıyorsa bir konsol penceresi oluşturulur. bu, genellikle Windows masaüstü uygulamasının istenen davranışından değildir. Değeri ile WinExe bir konsol penceresi oluşturulmaz. .NET 5 SDK ile başlayarak, Exe değer otomatik olarak öğesine dönüştürülür WinExe .

DisableWinExeOutputInferenceÖzelliği olarak davranma davranışını geri döndürür Exe WinExe . trueÖzellik değerinin davranışını geri yüklemek için bu değeri olarak ayarlayın OutputType Exe . false varsayılan değerdir.

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

Ayrıca bkz.