C# şablonları uygulama önyüklemesi kullanır
.NET iş yüklerindeki ilgili değişikliklere uygun olarak, C# için Windows Forms şablonları yönergeleri, dosya kapsamlı ad alanlarını ve null atanabilir başvuru türlerini destekleyecek global using
şekilde güncelleştirildi. Tipik bir Windows Forms uygulaması, Form1.cs ve Form1 gibi birden çok dosyaya bölünmüş birden çok türden oluştuğundan. Tasarım Aracı.cs, üst düzey deyimler Windows Forms şablonlarında önemli ölçüde yoktur. Ancak, güncelleştirilmiş şablonlar uygulama önyükleme kodunu içerir. .NET'in önceki bir sürümünü hedeflerseniz bu uyumsuzluğa neden olabilir.
Sürüm kullanıma sunulmuştur
.NET 6 RC 1
Eski davranış
Bir Windows Forms uygulama giriş noktası şöyle görünüyordu:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MyApp
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Yeni davranış
.NET 6+ uygulaması için yeni uygulama giriş noktası şöyle görünür:
namespace MyApp;
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
}
}
ApplicationConfiguration.Initialize()
Roslyn derleyicisi tarafından üretilen kısa ömürlü bir API'dir (kaynak oluşturucular aracılığıyla). Bu yöntem, özgün şablonların sahip olduğu çağrıların aynısını yayar. Aşağıdaki MSBuild özelliklerini ayarlayarak bu API'nin davranışını yapılandırabilirsiniz:
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
Herhangi bir özelliği açıkça yapılandırmazsanız, çalışma zamanında aşağıdaki kod yürütülür:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// ApplicationConfiguration.Initialize() will emit the following calls:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.Run(new Form1());
}
}
Kategoriyi değiştir
Bu değişiklik kaynak uyumluluğunu etkiler.
Değişiklik nedeni
Uygulama önyükleme özelliği:
- Windows Forms tasarımcısının tasarım yüzeyini tercih edilen yazı tipinde işlemesine izin verir.
- Şablonlardaki ortak kodu azaltır.
Önerilen eylem
Birden çok TFM'yi hedefleyen bir uygulama oluşturmak için aynı kaynak kullanılıyorsa, aşağıdakilerden birini yapabilirsiniz:
çağrısını
ApplicationConfiguration.Initialize();
özgün kodla değiştirin (ve API içinApplication.SetDefaultFont
tasarımcı desteğini kaybedin).Yönergeleri kullanın
#if...#endif
, örneğin:#if NET6_0_OR_GREATER ApplicationConfiguration.Initialize(); #else Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.SetHighDpiMode(HighDpiMode.SystemAware); #endif
Etkilenen API’ler
Yok