Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V souladu se souvisejícími změnami úloh .NET byly šablony model Windows Forms pro jazyk C# aktualizovány tak, aby podporovaly global using
direktivy, obory názvů v oboru souborů a odkazové typy s možnou hodnotou null. Vzhledem k tomu, že typická model Windows Forms aplikace se skládá z více typů rozdělených mezi více souborů, například Form1.cs a Form1.Designer.cs, chybí v šablonách model Windows Forms zejména příkazy nejvyšší úrovně. Aktualizované šablony však zahrnují kód bootstrap aplikace. To může způsobit nekompatibilitu, pokud cílíte na starší verzi .NET.
Zavedená verze
.NET 6 RC 1
Staré chování
Vstupní bod aplikace model Windows Forms vypadal takto:
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());
}
}
}
Nové chování
Nový vstupní bod aplikace pro aplikaci .NET 6 nebo novější vypadá takto:
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()
je dočasné rozhraní API vytvořené kompilátorem Roslyn (prostřednictvím zdrojových generátorů). Tato metoda generuje stejná volání jako původní šablony. Chování tohoto rozhraní API můžete nakonfigurovat nastavením následujících vlastností nástroje MSBuild:
- ApplicationDefaultFont
- ApplicationHighDpiMode
- ApplicationUseCompatibleTextRendering
- ApplicationVisualStyles
Pokud explicitně nenakonfigurujete žádné vlastnosti, spustí se za běhu následující kód:
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 změny
Tato změna má vliv na kompatibilitu zdroje.
Důvod změny
Funkce bootstrap aplikace:
- Umožňuje návrháři model Windows Forms vykreslit návrhovou plochu v upřednostňovaném písmu.
- Redukuje často používaný kód v šablonách.
Doporučená akce
Pokud se stejný zdroj používá k sestavení aplikace, která cílí na více TFM, můžete provést jednu z těchto věcí:
ApplicationConfiguration.Initialize();
Nahraďte volání původním kódem (a ztratíte podporu návrháře proApplication.SetDefaultFont
rozhraní API).Direktivy use
#if...#endif
, například:#if NET6_0_OR_GREATER ApplicationConfiguration.Initialize(); #else Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.SetHighDpiMode(HighDpiMode.SystemAware); #endif
Ovlivněná rozhraní API
–