Szablony języka C# używają uruchamiania aplikacji
Zgodnie z powiązanymi zmianami w obciążeniach platformy .NET szablony formularzy systemu Windows dla języka C# zostały zaktualizowane w celu obsługi global using
dyrektyw, przestrzeni nazw o zakresie plików i typów odwołań dopuszczanych do wartości null. Ponieważ typowa aplikacja Windows Forms składa się z wielu typów podzielonych na wiele plików, na przykład Form1.cs i Form1. Projektant.cs instrukcje najwyższego poziomu są szczególnie nieobecne w szablonach formularzy systemu Windows. Zaktualizowane szablony zawierają jednak kod bootstrap aplikacji. Może to spowodować niezgodność, jeśli docelowa jest wcześniejsza wersja platformy .NET.
Wprowadzona wersja
.NET 6 RC 1
Stare zachowanie
Punkt wejścia aplikacji Windows Forms wyglądał następująco:
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());
}
}
}
Nowe zachowanie
Nowy punkt wejścia aplikacji dla aplikacji .NET 6+ wygląda następująco:
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()
jest efemerycznym interfejsem API utworzonym przez kompilator Roslyn (za pośrednictwem generatorów źródłowych). Ta metoda emituje te same wywołania, które miały oryginalne szablony. Zachowanie tego interfejsu API można skonfigurować, ustawiając następujące właściwości programu MSBuild:
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
Jeśli nie skonfigurujesz jawnie żadnych właściwości, w czasie wykonywania zostanie wykonany następujący kod:
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());
}
}
Kategoria zmiany
Ta zmiana ma wpływ na zgodność ze źródłem.
Przyczyna wprowadzenia zmiany
Funkcja uruchamiania aplikacji:
- Umożliwia projektantowi formularzy systemu Windows renderowanie powierzchni projektowej w preferowanej czcionki.
- Zmniejsza standardowy kod w szablonach.
Zalecana akcja
Jeśli to samo źródło jest używane do tworzenia aplikacji przeznaczonej dla wielu serwerów TFM, możesz wykonać jedną z następujących czynności:
Zastąp wywołanie
ApplicationConfiguration.Initialize();
oryginalnym kodem (i utrac obsługę projektanta dlaApplication.SetDefaultFont
interfejsu API).Użyj
#if...#endif
dyrektyw, na przykład:#if NET6_0_OR_GREATER ApplicationConfiguration.Initialize(); #else Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.SetHighDpiMode(HighDpiMode.SystemAware); #endif
Dotyczy interfejsów API
Nie dotyczy