A C#-sablonok alkalmazás-rendszerindítást használnak

Összhangban a .NET-számítási feladatok kapcsolódó változásaival, a C#-hoz készült Windows Forms-sablonok frissültek a global using irányelvek, fájlhatáskörű névterek és null értékű hivatkozástípusok támogatására. Mivel egy tipikus Windows Forms-alkalmazás több fájlra osztott több típusból áll, például Form1.cs és Form1.Designer.cs, a felső szintű utasítások különösen hiányoznak a Windows Forms-sablonokból. A frissített sablonok azonban tartalmazzák az alkalmazás bootstrap-kódját. Ez inkompatibilitást okozhat, ha a .NET egy korábbi verzióját célozza meg.

Bevezetett verzió

.NET 6 RC 1

Régi viselkedés

A Windows Forms alkalmazás belépési pontja így nézett ki:

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());
        }
    }
}

Új viselkedés

A .NET 6+-os alkalmazások új alkalmazásbeléptetési pontja a következőképpen néz ki:

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() a Roslyn fordító által (forrásgenerátorokon keresztül) előállított rövid élettartamú API. Ez a metódus ugyanazokat a hívásokat bocsátja ki, mint az eredeti sablonok. Az API viselkedését az alábbi MSBuild tulajdonságok beállításával konfigurálhatja:

Ha nem konfigurálja explicit módon a tulajdonságokat, a rendszer futásidőben végrehajtja a következő kódot:

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());
    }
}

Kategória módosítása

Ez a módosítás hatással van a forráskompatibilitásra.

A változás oka

Az alkalmazás rendszerindítási funkciója:

  • Lehetővé teszi, hogy a Windows Forms tervezője megjelenítse a tervezőfelületet az előnyben részesített betűtípusban.
  • Csökkenti a sablonokban lévő ismétlődő kód mennyiségét.

Ha ugyanazt a forrást használja egy olyan alkalmazás létrehozásához, amely több TFM-et céloz meg, az alábbiak egyikét teheti:

  • Cserélje le a ApplicationConfiguration.Initialize(); hívást az eredeti kódra (és elveszíti az API tervezői Application.SetDefaultFont támogatását).

  • Használjon #if...#endif irányelveket, például:

    #if NET6_0_OR_GREATER
            ApplicationConfiguration.Initialize();
    #else
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.SetHighDpiMode(HighDpiMode.SystemAware);
    #endif
    

Érintett API-k

Nincs adat.