Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Übereinstimmung mit verwandten Änderungen in .NET-Workloads wurden Windows Forms-Vorlagen für C# aktualisiert, um Direktiven, Dateibereichsnamespaces und nullfähige Verweistypen zu unterstützen global using . Da eine typische Windows Forms-App aus mehreren Typen besteht, die über mehrere Dateien aufgeteilt werden, z. B. Form1.cs und Form1.Designer.cs, fehlen insbesondere Anweisungen auf oberster Ebene von den Windows Forms-Vorlagen. Die aktualisierten Vorlagen enthalten jedoch Anwendungs-Bootstrap-Code. Dies kann zu Inkompatibilität führen, wenn Sie auf eine frühere Version von .NET abzielen.
Eingeführte Version
.NET 6 RC 1
Altes Verhalten
Ein Einstiegspunkt der Windows Forms-Anwendung sieht wie folgt aus:
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());
}
}
}
Neues Verhalten
Der neue Einstiegspunkt für eine .NET 6+-Anwendung sieht wie folgt aus:
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() ist eine ephemerale API, die vom Roslyn-Compiler (über Quellgeneratoren) erstellt wird. Diese Methode gibt dieselben Aufrufe aus, die die ursprünglichen Vorlagen hatten. Sie können das Verhalten dieser API konfigurieren, indem Sie die folgenden MSBuild-Eigenschaften festlegen:
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
Wenn Sie keine Eigenschaften explizit konfigurieren, wird der folgende Code zur Laufzeit ausgeführt:
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());
}
}
Kategorie ändern
Diese Änderung wirkt sich auf die Quellkompatibilität aus.
Grund für Änderung
Das Bootstrap-Feature der Anwendung:
- Ermöglicht dem Windows Forms-Designer das Rendern der Entwurfsoberfläche in der bevorzugten Schriftart.
- Es reduziert Codebausteine in den Vorlagen.
Empfohlene Aktion
Wenn dieselbe Quelle verwendet wird, um eine Anwendung zu erstellen, die auf mehrere TFMs ausgerichtet ist, können Sie eine der folgenden Aktionen ausführen:
Ersetzen Sie den
ApplicationConfiguration.Initialize();-Aufruf durch den ursprünglichen Code (und deaktivieren Sie die Designerunterstützung für dieApplication.SetDefaultFont-API).Verwenden Sie beispielsweise
#if...#endif-Direktiven:#if NET6_0_OR_GREATER ApplicationConfiguration.Initialize(); #else Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.SetHighDpiMode(HighDpiMode.SystemAware); #endif
Betroffene APIs
Nicht verfügbar