.NET Masaüstü SDK projeleri için MSBuild başvurusu

Bu sayfa, .NET Masaüstü SDK'sı ile Windows Forms (WinForms) ve Windows Presentation Foundation (WPF) projelerini yapılandırmak için kullandığınız MSBuild özelliklerine ve öğelerine yönelik bir başvurudur.

Not

Bu makalede, masaüstü uygulamalarıyla ilgili olarak .NET SDK'sı için MSBuild özelliklerinin bir alt kümesi belgelemektedir. Yaygın .NET SDK'ya özgü MSBuild özelliklerinin listesi için bkz . .NET SDK projeleri için MSBuild başvurusu. Yaygın MSBuild özelliklerinin listesi için bkz . Ortak MSBuild özellikleri.

.NET Masaüstü SDK'sını etkinleştirme

WinForms veya WPF kullanmak için WinForms veya WPF projenizin proje dosyasında aşağıdaki ayarları belirtin:

  • .NET SDK'sını Microsoft.NET.Sdkhedefle. Daha fazla bilgi için bkz . Proje dosyaları.
  • Gibi Windows'a özgü bir hedef çerçeve takma adı olarak net8.0-windowsayarlayınTargetFramework.
  • Ui framework özelliği (veya gerekirse her ikisini birden) ekleyin:
    • WPF'yi true içeri aktarmak ve kullanmak için olarak ayarlayınUseWPF.
    • true WinForms'ı içeri aktarmak ve kullanmak için olarak ayarlayınUseWindowsForms.
  • (İsteğe bağlı) olarak WinExeayarlayınOutputType. Bu ayar, kitaplığın aksine bir uygulama oluşturur. Kitaplık oluşturmak için bu özelliği atla.
<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 varsayılan olarak içerir ve dışlar

SDK projeleri, dosyaları örtük olarak dahil etmek veya projeden dışlamak için bir dizi kural tanımlar. Bu kurallar, dosyanın derleme eylemini de otomatik olarak ayarlar. Bu davranış, varsayılan ekleme veya dışlama kuralları olmayan SDK olmayan eski .NET Framework projelerinin aksinedir. .NET Framework projeleri, projeye eklenecek dosyaları açıkça bildirmenizi gerektirir.

.NET proje dosyaları, dosyaları otomatik olarak işlemek için standart bir kural kümesi içerir. WPF projeleri ek kurallar ekler.

Aşağıdaki tabloda, proje özelliği olarak ayarlandığında true.NET Masaüstü SDK'sına UseWPF dahil edilen ve dışlanan öğeler ve glob'lar gösterilmektedir:

Öğe Glob ekle Glob'ı dışla Glob kaldırma
ApplicationDefinition App.xaml veya Application.xaml Yok Yok
Page **/*.xaml **/*.kullanıcı; **/*.*proj; **/*.sln; **/*.vssscc
Tarafından tanımlanan tüm XAML'ler ApplicationDefinition
Yok
None Yok Yok **/*.xaml

Tüm proje türleri için varsayılan ekleme ve dışlama ayarları aşağıdadır. Daha fazla bilgi için bkz . Varsayılan ekleme ve dışlamalar.

Öğe Glob ekle Glob'ı dışla Glob kaldırma
Compile **/*.bilgisayar bilimi; **/*.vb (veya diğer dil uzantıları) **/*.kullanıcı; **/*.*proj; **/*.sln; **/*.vssscc Yok
EmbeddedResource **/*.resx **/*.kullanıcı; **/*.*proj; **/*.sln; **/*.vssscc Yok
None **/* **/*.kullanıcı; **/*.*proj; **/*.sln; **/*.vssscc **/*.bilgisayar bilimi; **/*.resx

Projenize açıkça dosya eklediyseniz veya projenize dosyaları otomatik olarak eklemek için XAML glob'larınız varsa, aşağıdaki hatalardan birini alabilirsiniz:

  • Yinelenen 'ApplicationDefinition' öğeleri dahil edildi.
  • Yinelenen 'Page' öğeleri dahil edildi.

Bu hatalar, ayarlarınızla çakışan örtük Ekleme glob'larının bir sonucu olarak ortaya çıkar. Bu soruna geçici bir çözüm bulmak için veya EnableDefaultPageItems olarak falseayarlayınEnableDefaultApplicationDefinition. Bu değerlerin false ayarlanması, varsayılan glob'ları veya projenize eklenecek dosyaları açıkça tanımlamanız gereken önceki SDK'ların davranışına geri döner.

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

WPF ayarları

WPF'ye özgü olmayan proje ayarları hakkında bilgi için bkz . .NET SDK projeleri için MSBuild başvurusu.

UseWPF

özelliği WPF UseWPF kitaplıklarına başvuru eklenip eklenmeyeceğini denetler. Bu ayar, BIR WPF projesini ve ilgili dosyaları doğru şekilde işlemek için MSBuild işlem hattını da değiştirir. Varsayılan değer şudur: false. UseWPF WPF desteğini etkinleştirmek için özelliğini olarak true ayarlayın. Windows platformunu yalnızca bu özellik etkinleştirildiğinde hedefleyebilirsiniz.

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

Bu özellik olarak trueayarlandığında ,NET projeleri .NET Masaüstü SDK'sını otomatik olarak içeri aktarır.

EnableDefaultApplicationDefinition

özelliği, EnableDefaultApplicationDefinition öğelerin projeye örtük olarak eklenip eklenmeyeceğini ApplicationDefinition denetler. Varsayılan değer şudur: true. EnableDefaultApplicationDefinition Örtük false dosya eklemeyi devre dışı bırakmak için özelliğini olarak ayarlayın.

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

Bu özellik, özelliğin EnableDefaultItems varsayılan ayar olan olarak trueayarlanmasını gerektirir.

EnableDefaultPageÖğeleri

EnableDefaultPageItems özelliği, .xaml dosyaları olan öğelerin projeye örtük olarak eklenip eklenmeyeceğini Page denetler. Varsayılan değer şudur: true. EnableDefaultPageItems Örtük false dosya eklemeyi devre dışı bırakmak için özelliğini olarak ayarlayın.

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

Bu özellik, özelliğin EnableDefaultItems varsayılan ayar olan olarak trueayarlanmasını gerektirir.

Windows Forms ayarları

WinForms'a özgü olmayan proje özellikleri hakkında 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öntemine Application.SetDefaultFont(Font) bir çağrı yayıp yaymayacağını denetler. Varsayılan değer boş bir dizedir ve uygulamanın varsayılan yazı tipinin özelliğinden Control.DefaultFont kaynaklanmış olduğu anlamına gelir.

Boş olmayan bir değer, sabit kültürle (liste ayırıcı= ve ondalık ayırıcı=.,) çağrılan yöntemin çıkışına FontConverter.ConvertTo eşdeğer bir biçime uymalı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 ile Visual Studio 2022 ve sonraki sürümleri tarafından desteklenir.

ApplicationHighDpiMode

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

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

ApplicationHighDpiMode sabit listesi değerlerinden HighDpiMode birine ayarlanabilir:

Value Açıklama
DpiUnaware Uygulama penceresi DPI değişiklikleri için ölçeklendirilmiyor ve her zaman %100 ölçek faktörü varsayılır.
DpiUnawareGdiScaled gibi DpiUnaware, ancak GDI/GDI+ tabanlı içeriğin kalitesini artırır.
PerMonitor Pencere oluşturulduğunda DPI'yi denetler ve DPI değiştiğinde ölçek faktörünü ayarlar.
PerMonitorV2 gibi PerMonitor, ancak alt pencere DPI değişiklik bildirimini, comctl32 denetimlerinin geliştirilmiş ölçeklendirmesini ve iletişim kutusu ölçeklendirmesini etkinleştirir.
SystemAware Belirtilmezse varsayılan .
Pencere birincil izleyicinin DPI'sini bir kez sorgular ve tüm monitörlerde uygulama için bu değeri kullanır.

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

ApplicationUseCompatibleTextRendering

özelliği, ApplicationUseCompatibleTextRendering belirli denetimlerde tanımlanan özellik için uygulama genelindeki UseCompatibleTextRendering varsayılan değeri belirtir. Kaynak tarafından oluşturulan ApplicationConfiguration.Initialize() API tarafından yayılan yöntemin bağımsız değişkenini Application.SetCompatibleTextRenderingDefault(Boolean) denetler. Varsayılan değer şudur: false.

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

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

ApplicationVisualStyles

özelliği, ApplicationVisualStyles görsel stilleri etkinleştirmek için uygulama genelindeki varsayılan değeri belirtir. Kaynak tarafından oluşturulan ApplicationConfiguration.Initialize() API'nin öğesine bir çağrı Application.EnableVisualStyles()yayıp yaymayacağını denetler. Varsayılan değer şudur: true.

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

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

UseWindowsForms

özelliği, uygulamanızın UseWindowsForms Windows Forms'a hedef olacak şekilde derlenip derlenmediğini 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. Varsayılan değer şudur: false. UseWindowsForms Windows Forms desteğini etkinleştirmek için özelliğini olarak true ayarlayın. Windows platformunu yalnızca bu ayar etkinleştirildiğinde hedefleyebilirsiniz.

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

Bu özellik olarak trueayarlandığında ,NET projeleri .NET Masaüstü SDK'sını otomatik olarak içeri aktarır.

Ayrıca bkz.