Aracılığıyla paylaş


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:

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.

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çin Application.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