.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
TargetFrameworkWindows özgü bir hedef çerçeve adına ayarlanırnet6.0-windows. - UI çerçevesi özelliği ekleyin (veya gerekirse her ikisi de):
UseWPFWPF 'yitrueiçeri ve daha sonra kullanmak için olarak ayarlayın.UseWindowsFormstrueWinForms içeri aktarıp kullanmak için olarak ayarlayın.
- Seçim
OutputTypeOlarak ayarlayınWinExe. 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ınnetcoreapp3.1.- UI çerçevesi özelliği ekleyin (veya gerekirse her ikisi de):
UseWPFWPF 'yitrueiçeri ve daha sonra kullanmak için olarak ayarlayın.UseWindowsFormstrueWinForms içeri aktarıp kullanmak için olarak ayarlayın.
- Seçim
OutputTypeOlarak ayarlayınWinExe. 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 |
"Yinelenen" öğelerle ilgili hatalar
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ı
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
- UseWindowsForms
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>