Sdílet prostřednictvím


Zásadní změny migrace z rozhraní .NET Framework na .NET Core

Pokud migrujete aplikaci z rozhraní .NET Framework na .NET Core verze 1.0 až 3.1, můžou vás zásadní změny uvedené v tomto článku ovlivnit. Zásadní změny jsou seskupené podle kategorií a v těchto kategoriích podle verze .NET Core, ve které byly zavedeny.

Poznámka

Tento článek není úplný seznam zásadních změn mezi rozhraním .NET Framework a .NET Core. Nejdůležitější zásadní změny jsou přidávány sem, jakmile o nich zjistíme.

Základní knihovny .NET

.NET 8

rozhraní API IDispatchImplAttribute je odstraněno

.NET Core 2.1

Změna výchozí hodnoty UseShellExecute

ProcessStartInfo.UseShellExecute má výchozí hodnotu false v .NET Core. V rozhraní .NET Framework je její výchozí hodnota true.

Změnit popis

Process.Start umožňuje spustit aplikaci přímo, například s kódem, jako je Process.Start("mspaint.exe"), který spustí Malování. Umožňuje také nepřímo spustit přidruženou aplikaci, pokud je ProcessStartInfo.UseShellExecute nastavena na true. V rozhraní .NET Framework je výchozí hodnota pro ProcessStartInfo.UseShellExecutetrue, což znamená, že kód, jako je Process.Start("mytextfile.txt"), spustí Poznámkový blok, pokud jste přidružili .txt soubory s tímto editorem. Pokud chcete zabránit nepřímému spuštění aplikace v rozhraní .NET Framework, musíte explicitně nastavit ProcessStartInfo.UseShellExecute na false. V .NET Core je výchozí hodnota pro ProcessStartInfo.UseShellExecutefalse. To znamená, že přidružené aplikace se ve výchozím nastavení nespouštějí při volání Process.Start.

Následující vlastnosti na System.Diagnostics.ProcessStartInfo jsou funkční pouze, když je ProcessStartInfo.UseShellExecutetrue:

Tato změna byla zavedena v .NET Core z důvodů výkonu. Obvykle Process.Start slouží ke spuštění aplikace přímo. Spuštění aplikace přímo nemusí zahrnovat prostředí Windows a vyžadovat související náklady na výkon. Aby byl tento výchozí případ rychlejší, změní .NET Core výchozí hodnotu ProcessStartInfo.UseShellExecute na false. Pokud ji potřebujete, můžete se přihlásit k pomalejší cestě.

Zavedená verze

2.1

Poznámka

V dřívějších verzích .NET Core se UseShellExecute pro Windows neimplementoval.

Pokud se vaše aplikace spoléhá na staré chování, zavolejte Process.Start(ProcessStartInfo) a nastavte UseShellExecute na true na objektu ProcessStartInfo.

Kategorie

Základní knihovny .NET

Ovlivněná rozhraní API


.NET Core 1.0

Neautorizovaná přístupová výjimka vyvolaná FileSystemInfo.Attributes

V .NET Core je vyvolán UnauthorizedAccessException, když se volající pokusí nastavit hodnotu atributu souboru, ale nemá oprávnění k zápisu.

Změnit popis

V rozhraní .NET Framework je vyvolán ArgumentException, když se volající pokusí nastavit hodnotu atributu souboru v FileSystemInfo.Attributes, ale nemá oprávnění k zápisu. V .NET Core se místo toho vyvolá UnauthorizedAccessException. (V .NET Core se stále vyvolá ArgumentException, pokud se volající pokusí nastavit neplatný atribut souboru.)

Zavedená verze

1.0

Podle potřeby upravte všechny příkazy catch tak, aby zachytily UnauthorizedAccessException místo ArgumentExceptionnebo kromě něj.

Kategorie

Základní knihovny .NET

Ovlivněná rozhraní API


Zpracování výjimek poškozeného stavu není podporováno.

Zpracování výjimek poškozeného stavu procesu v .NET Core se nepodporuje.

Změnit popis

Dříve bylo možné zachytit a zpracovat výjimky poškozeného stavu procesu obslužnými rutinami ve spravovaném kódu, například pomocí příkazu try-catch v jazyce C#.

Počínaje verzí .NET Core 1.0 nelze v rámci spravovaného kódu zpracovat výjimky poškozeného stavu procesu. Modul CLR (Common Language Runtime) nedoručuje spravovanému kódu výjimky poškozeného stavu procesu.

Představená verze

1.0

Vyhněte se nutnosti řešit výjimky kvůli poškození stavu procesu tím, že raději adresujete samotné příčiny těchto situací. Pokud je naprosto nezbytné zpracovat výjimky poškozeného stavu procesu, napište obslužnou rutinu výjimky v kódu jazyka C nebo C++.

Kategorie

Základní knihovny .NET

Ovlivněná rozhraní API


Vlastnosti nástroje UriBuilder už nemají předem připravené počáteční znaky.

UriBuilder.Fragment již nepředřazuje úvodní znak # a UriBuilder.Query již nepředřazuje úvodní znak ?, pokud již je přítomen.

Změnit popis

V rozhraní .NET Framework vlastnosti UriBuilder.Fragment a UriBuilder.Query vždy přidávají před ukládanou hodnotu znak # nebo ?, přičemž je použito v tomto pořadí. Toto chování může vést k více # nebo ? znaků v uložené hodnotě, pokud řetězec již obsahuje jeden z těchto úvodních znaků. Například hodnota UriBuilder.Fragment se může stát ##main.

Počínaje verzí .NET Core 1.0 tyto vlastnosti již nepřidávají znaky # ani ? na začátek uložené hodnoty, pokud již na začátku řetězce jsou.

Představená verze

1.0

Při nastavování hodnot vlastností už nemusíte explicitně odebírat žádné z těchto úvodních znaků. To je zvlášť užitečné, když připojujete hodnoty, protože už nemusíte odebírat úvodní # nebo ? při každém připojení.

Následující fragment kódu například ukazuje rozdíl chování mezi rozhraním .NET Framework a .NET Core.

var builder = new UriBuilder();
builder.Query = "one=1";
builder.Query += "&two=2";
builder.Query += "&three=3";
builder.Query += "&four=4";

Console.WriteLine(builder.Query);
  • V rozhraní .NET Framework je výstup ????one=1&two=2&three=3&four=4.
  • V .NET Core je výstup ?one=1&two=2&three=3&four=4.

Kategorie

Základní knihovny .NET

Ovlivněná rozhraní API


Process.StartInfo vyvolá výjimku InvalidOperationException pro procesy, které jste nespusili.

Čtení vlastnosti Process.StartInfo procesů, které váš kód nespustil, vyvolá InvalidOperationException.

Změnit popis

V rozhraní .NET Framework, při přístupu k vlastnosti Process.StartInfo pro procesy, které váš kód nespustil, se vrátí zástupný objekt ProcessStartInfo. Fiktivní objekt obsahuje výchozí hodnoty pro všechny jeho vlastnosti s výjimkou EnvironmentVariables.

Počínaje .NET Core 1.0, pokud přečtete vlastnost Process.StartInfo procesu, který jste nespustili (tj. voláním Process.Start), vyvolá se InvalidOperationException.

Uvedená verze

1.0

Nepřistupujte k vlastnosti Process.StartInfo pro procesy, které váš kód nespusl. Například, nečtěte tuto vlastnost pro procesy vrácené Process.GetProcesses.

Kategorie

Základní knihovny .NET

Ovlivněná rozhraní API


Kryptografie

.NET Core 2.1

Je respektován booleovský parametr SignedCms.ComputeSignature.

V .NET Core se dodržuje logický parametr silent metody SignedCms.ComputeSignature(CmsSigner, Boolean). Výzva k zadání kódu PIN se nezobrazí, pokud je tento parametr nastavený na true.

Změnit popis

V rámci rozhraní .NET Framework se silent parametr metody SignedCms.ComputeSignature(CmsSigner, Boolean) ignoruje a pokud je to vyžadováno poskytovatelem, vždy se zobrazí výzva k zadání kódu PIN. V .NET Core se respektuje parametr silent a pokud je nastavený na true, výzva k zadání kódu PIN se nikdy nezobrazí, i když to poskytovatel vyžaduje.

Podpora zpráv CMS/PKCS #7 byla zavedena do .NET Core ve verzi 2.1.

Zavedená verze

2.1

Pokud chcete zajistit, aby se v případě potřeby zobrazila výzva k zadání kódu PIN, měly by desktopové aplikace volat SignedCms.ComputeSignature(CmsSigner, Boolean) a nastavit logický parametr na false. Výsledné chování je stejné jako v rozhraní .NET Framework bez ohledu na to, jestli je tam tichý kontext deaktivován.

Kategorie

Kryptografie

Ovlivněná rozhraní API


MSBuild

.NET Core 3.0

Změna názvu souboru manifestu prostředku

Počínaje .NET Core 3.0 vygeneruje MSBuild ve výchozím případě pro soubory prostředků jiný název souboru manifestu.

Zavedená verze

3.0

Změnit popis

Před .NET Core 3.0, pokud nebyla zadána žádná LogicalName, ManifestResourceNamenebo metadata DependentUpon pro položku EmbeddedResource v souboru projektu, nástroj MSBuild vygeneroval název souboru manifestu ve vzoru <RootNamespace>.<ResourceFilePathFromProjectRoot>.resources. Pokud RootNamespace není definován v souboru projektu, je výchozí název projektu. Například vygenerovaný název manifestu pro soubor prostředků s názvem Form1.resx v kořenovém adresáři projektu byl MyProject.Form1.resources.

Počínaje .NET Core 3.0, pokud je soubor prostředků umístěný společně se zdrojovým souborem se stejným názvem (například Form1.resx a Form1.cs), nástroj MSBuild používá informace o typu ze zdrojového souboru k vygenerování názvu souboru manifestu podle vzoru <Namespace>.<ClassName>.resources. Obor názvů a název třídy se získávají z prvního typu, který se nachází v souběžném zdrojovém souboru. Například vygenerovaný název manifestu pro soubor prostředků s názvem Form1.resx, který je spoluřazený se zdrojovým souborem s názvem Form1.cs, je MyNamespace.Form1.resources. Klíčovou věcí, kterou je třeba poznamenat, je, že první část názvu souboru se liší od předchozích verzí .NET Core (MyNamespace místo MyProject).

Poznámka

Pokud máte metadata LogicalName, ManifestResourceNamenebo DependentUpon zadaná u položky EmbeddedResource v souboru projektu, tato změna nemá vliv na soubor prostředků.

Tato změna způsobující chybu byla zavedena přidáním vlastnosti EmbeddedResourceUseDependentUponConvention do projektů .NET Core. Ve výchozím nastavení nejsou soubory prostředků explicitně uvedeny v souboru projektu .NET Core, takže nemají žádná metadata DependentUpon k určení, jak pojmenovat soubor s vygenerovanými prostředky .resources. Pokud je EmbeddedResourceUseDependentUponConvention nastavena na true, což je výchozí, nástroj MSBuild vyhledá společnělokovaný zdrojový soubor a extrahuje z daného souboru obor názvů a název třídy. Pokud nastavíte EmbeddedResourceUseDependentUponConvention na false, nástroj MSBuild vygeneruje název manifestu podle předchozího chování, které kombinuje RootNamespace a relativní cestu k souboru.

Ve většině případů se nevyžaduje žádná akce na straně vývojáře a vaše aplikace by měla dál fungovat. Pokud ale tato změna aplikaci přeruší, můžete:

  • Změňte kód tak, aby očekával nový název manifestu.

  • Odhlaste se z nové konvence vytváření názvů nastavením EmbeddedResourceUseDependentUponConvention na false v souboru projektu.

    <PropertyGroup>
      <EmbeddedResourceUseDependentUponConvention>false</EmbeddedResourceUseDependentUponConvention>
    </PropertyGroup>
    

Kategorie

MSBuild

Ovlivněná rozhraní API

Není k dispozici


Síťování

.NET Core 2.0

WebClient.CancelAsync se vždy nezruší okamžitě.

Od verze .NET Core 2.0 volání WebClient.CancelAsync() okamžitě nezruší požadavek, pokud načítání odpovědi již začalo.

Změnit popis

Dříve volání WebClient.CancelAsync() žádost okamžitě zrušilo. Od .NET Core 2.0 volání WebClient.CancelAsync() zruší požadavek okamžitě, pouze pokud ještě nezačalo stahování odpovědi. Pokud se odpověď začala načítat, požadavek se zruší až po přečtení úplné odpovědi.

Tato změna byla implementována, protože rozhraní API WebClient je zastaralé ve prospěch HttpClient.

Zavedená verze

2.0

Místo System.Net.WebClientpoužijte třídu System.Net.Http.HttpClient, která je zastaralá.

Kategorie

Síťování

Ovlivněná rozhraní API


Windows Forms

Podpora modelu Windows Forms byla přidána do .NET Core ve verzi 3.0. Pokud migrujete aplikaci Windows Forms z rozhraní .NET Framework do .NET Core, můžou zásadní změny uvedené tady ovlivnit vaši aplikaci.

.NET Core 3.1

Odebrané ovládací prvky

Počínaje verzí .NET Core 3.1 už některé ovládací prvky Windows Forms nejsou k dispozici.

Změnit popis

Od verze .NET Core 3.1 už nejsou k dispozici různé ovládací prvky Windows Forms. V rozhraní .NET Framework 2.0 byly zavedeny náhradní ovládací prvky, které mají lepší návrh a podporu. Zastaralé ovládací prvky byly dříve odebrány z nástrojů návrháře, ale byly stále k dispozici k použití.

Následující typy už nejsou k dispozici:

Představená verze

3.1

Každý odebraný ovládací prvek má doporučený náhradní ovládací prvek. Projděte si následující tabulku:

Odebrání ovládacího prvku (API) Doporučená náhrada Přidružená rozhraní API, která se odeberou
ContextMenu ContextMenuStrip
DataGrid DataGridView DataGridCell, DataGridRow, DataGridTableCollection, DataGridColumnCollection, DataGridTableStyle, DataGridColumnStyle, DataGridLineStyle, DataGridParentRowsLabel, DataGridParentRowsLabelStyle, DataGridBoolColumn, DataGridTextBox, GridColumnStylesCollection, GridTableStylesCollection, HitTestType
Hlavní nabídka MenuStrip
Menu ToolStripDropDown, ToolStripDropDownMenu KolekceMenuPoložek
MenuItem ToolStripMenuItem
Panel nástrojů ToolStrip Vzhled lišty nástrojů
ToolBarButton ToolStripButton ToolBarButtonClickEventArgs, ToolBarButtonClickEventHandler, ToolBarButtonStyle, ToolBarTextAlign

Kategorie

Windows Forms

Ovlivněná rozhraní API


Událost CellFormatting se nevyvolá, pokud je zobrazen popisek.

DataGridView teď zobrazuje text buňky a popisy chyb při najetí myší a při výběru pomocí klávesnice. Pokud se zobrazí popis, událost DataGridView.CellFormatting se nevyvolá.

Změnit popis

Před .NET Core 3.1 DataGridView, který měl vlastnost ShowCellToolTips nastavenou na true, zobrazoval nápovědu pro text a chyby buňky při najetí myší na buňku. Popisky se nezobrazovaly, když byla buňka vybrána pomocí klávesnice, například klávesou Tab, klávesovými zkratkami nebo navigací pomocí šipek. Pokud uživatel upravil buňku a potom, zatímco DataGridView byl stále v režimu úprav, najedl myší na buňku, která nemá nastavenou vlastnost ToolTipText, byla vyvolána událost CellFormatting pro formátování textu buňky pro zobrazení v buňce.

Aby bylo dosaženo standardů přístupnosti, počínaje .NET Core 3.1, DataGridView, která má vlastnost ShowCellToolTips nastavenou na true, zobrazuje popisky pro text buňky a chyby nejen při najetí myší, ale také když je vybrána pomocí klávesnice. V důsledku této změny je událost CellFormattingnení vyvolána, pokud jsou buňky, které nemají nastavenou vlastnost ToolTipText, najet myší, když je DataGridView v režimu úprav. Událost není vyvolána, protože obsah najeté buňky se místo zobrazení v buňce zobrazí jako popis.

Zavedená verze

3.1

Refaktorovat jakýkoli kód, který závisí na události CellFormatting, zatímco DataGridView je v editačním režimu.

Kategorie

Windows Forms

Ovlivněná rozhraní API

Žádný


.NET Core 3.0

Výchozí písmo ovládacího prvku se změnilo na Segoe UI 9 pt

Změnit popis

V rozhraní .NET Framework byla vlastnost Control.DefaultFont nastavena na Microsoft Sans Serif 8.25 pt. Následující obrázek znázorňuje okno, které používá výchozí písmo.

výchozí písmo ovládacího prvku v rozhraní .NET Framework

Počínaje verzí .NET Core 3.0 je výchozí písmo nastaveno na Segoe UI 9 pt (stejné písmo jako SystemFonts.MessageBoxFont). V důsledku této změny mají formuláře a ovládací prvky velikost přibližně 27% větší, aby zohlednily větší velikost nového výchozího písma. Například:

výchozí písmo ovládacího prvku v .NET Core

Tato změna byla provedena v souladu s pokyny pro uživatelské prostředí (UX) systému Windows .

Verze byla představena

3.0

Vzhledem ke změně velikosti formulářů a ovládacích prvků se ujistěte, že se aplikace správně vykresluje.

Chcete-li zachovat původní písmo pro jeden formulář, nastavte jeho výchozí písmo na Microsoft Sans Serif 8.25 pt. Například:

public MyForm()
{
    InitializeComponent();
    Font = new Font(new FontFamily("Microsoft Sans Serif"), 8.25f);
}

Nebo můžete změnit výchozí písmo pro celou aplikaci některým z následujících způsobů:

  • Nastavením vlastnosti ApplicationDefaultFont MSBuild na "Microsoft Sans Serif, 8.25pt". Toto je upřednostňovaná technika, protože umožňuje Visual Studio používat nová nastavení v návrháři.

    <PropertyGroup>
      <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont>
    </PropertyGroup>
    
  • Voláním Application.SetDefaultFont(Font).

    class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.SetHighDpiMode(HighDpiMode.SystemAware);
            Application.SetDefaultFont(new Font(new FontFamily("Microsoft Sans Serif"), 8.25f));
            Application.Run(new Form1());
        }
    }
    

Kategorie

  • Windows Forms

Ovlivněná rozhraní API

Žádný.


Modernizace složkyBrowserDialog

Ovládací prvek FolderBrowserDialog se v aplikacích Windows Forms pro .NET Core změnil.

Změnit popis

V rozhraní .NET Framework používá formuláře Windows pro ovládací prvek FolderBrowserDialog následující dialogové okno:

FolderBrowserDialogControl v rozhraní .NET Framework

V rozhraní .NET Core 3.0 používá Windows Forms novější ovládací prvek založený na modelu COM, který byl zaveden v systému Windows Vista:

Ovládací prvek výběrného dialogu složek ve .NET Core

Zavedená verze

3.0

Dialogové okno se automaticky upgraduje.

Pokud chcete zachovat původní dialogové okno, nastavte vlastnost FolderBrowserDialog.AutoUpgradeEnabled na false před zobrazením dialogového okna, jak je znázorněno v následujícím fragmentu kódu:

var dialog = new FolderBrowserDialog();
dialog.AutoUpgradeEnabled = false;
dialog.ShowDialog();

Kategorie

Windows Forms

Ovlivněná rozhraní API


SerializableAttribute odebrán z některých typů Windows Forms

SerializableAttribute byl odebrán z některých tříd Modelu Windows Forms, které nemají žádné známé scénáře binární serializace.

Změnit popis

Následující typy jsou zdobeny SerializableAttribute v rozhraní .NET Framework, ale atribut byl odebrán v .NET Core:

Tento mechanismus serializace má v minulosti vážné obavy ohledně údržby a zabezpečení. Nutnost udržovat SerializableAttribute u typů znamená, že tyto typy musí být testovány na změny serializace mezi verzemi a potenciálně na změny serializace mezi rámci. To znesnadňuje vývoj těchto typů a může být nákladný na údržbu. Tyto typy nemají žádné známé scénáře binární serializace, které minimalizují dopad odebrání atributu.

Další informace naleznete v binární serializace.

Představená verze

3.0

Aktualizujte veškerý kód, který může záviset na těchto typech, které jsou označené jako serializovatelné.

Kategorie

Windows Forms

Ovlivněná rozhraní API

  • Žádný

Přepínač kompatibility AllowUpdateChildControlIndexForTabControls se nepodporuje.

Přepínač kompatibility Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls je podporován ve Windows Forms v rozhraní .NET Framework 4.6 a novějších verzích, ale nepodporuje se v .NET Core nebo .NET 5.0 a novějších verzích.

Změnit popis

V rámci .NET Framework 4.6 a novějších verzí se při výběru karty znovu uspořádá její kolekce ovládacích prvků. Přepínač kompatibility Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls umožňuje aplikaci toto přeuspořádání přeskočit, pokud je toto chování nežádoucí.

V .NET Core a .NET 5.0 a novějších se přepínač Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls nepodporuje.

Představená verze

3.0

Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.

Kategorie

Windows Forms

Ovlivněná rozhraní API

  • Žádný

Přepínač kompatibility DomainUpDown.UseLegacyScrolling se nepodporuje.

Přepínač kompatibility Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling, který byl zaveden v rozhraní .NET Framework 4.7.1, není ve Windows Forms v .NET Core nebo .NET 5.0 a novějším podporován.

Změnit popis

Počínaje rozhraním .NET Framework 4.7.1 umožňuje přechod na kompatibilitu Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling vývojářům vyjádřit nesouhlas s nezávislými DomainUpDown.DownButton() a DomainUpDown.UpButton() akcemi. Přepínač obnovil starší verzi chování, ve kterém se DomainUpDown.UpButton() ignoruje, pokud je kontextový text k dispozici, a vývojář musí použít DomainUpDown.DownButton() akci ovládacího prvku před akcí DomainUpDown.UpButton(). Další informace naleznete v tématu <AppContextSwitchOverrides> element.

V .NET Core a .NET 5.0 a novějších se přepínač Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling nepodporuje.

Zavedená verze

3.0

Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.

Kategorie

Windows Forms

Ovlivněná rozhraní API


Nepodporovaný přepínač kompatibility DoNotLoadLatestRichEditControl

Přepínač kompatibility Switch.System.Windows.Forms.UseLegacyImages, který byl zaveden v rozhraní .NET Framework 4.7.1, není ve Windows Forms v .NET Core nebo .NET 5.0 a novějším podporován.

Změnit popis

V rozhraní .NET Framework 4.6.2 a předchozích verzích vytvoří ovládací prvek RichTextBox instanci ovládacího prvku Win32 RichEdit verze 3.0 a pro aplikace, které cílí na rozhraní .NET Framework 4.7.1, RichTextBox ovládací prvek vytvoří instanci RichEdit v4.1 (v msftedit.dll). Přepínač kompatibility Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl byl zaveden tak, aby umožňoval aplikacím, které cílí na rozhraní .NET Framework 4.7.1 a novější verze, aby se odhlásily z nového ovládacího prvku RichEdit v4.1 a místo toho používaly starý ovládací prvek RichEdit v3.

V .NET Core a .NET 5.0 a novějších verzích se přepínač Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl nepodporuje. Podporují se jenom nové verze ovládacího prvku RichTextBox.

Zavedená verze

3.0

Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.

Kategorie

Windows Forms

Ovlivněná rozhraní API


Přepínač kompatibility pro DoNotSupportSelectAllShortcutInMultilineTextBox není podporován

Přepínač kompatibility Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox, který byl zaveden v rozhraní .NET Framework 4.6.1, není ve Windows Forms v .NET Core a .NET 5.0 a novějších podporovaný.

Změnit popis

Počínaje rozhraním .NET Framework 4.6.1 klávesová zkratka Ctrl + A ve vybraném ovládacím prvku TextBox vybrala veškerý text. V rozhraní .NET Framework 4.6 a předchozích verzích se stisknutím klávesové zkratky Ctrl + A nepovedlo vybrat veškerý text, pokud byly obě vlastnosti Textbox.ShortcutsEnabled a TextBox.Multiline nastaveny na true. Přepínač kompatibility Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox byl zaveden v rozhraní .NET Framework 4.6.1, aby se zachovalo původní chování. Další informace naleznete v tématu TextBox.ProcessCmdKey.

V .NET Core a .NET 5.0 a novějších verzích se přepínač Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox nepodporuje.

Představená verze

3.0

Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.

Kategorie

Windows Forms

Ovlivněná rozhraní API

  • Žádný

Přepínač kompatibility DontSupportReentrantFilterMessage není podporován.

Přepínač kompatibility Switch.System.Windows.Forms.DontSupportReentrantFilterMessage, který byl zaveden v rozhraní .NET Framework 4.6.1, není ve Windows Forms v .NET Core a .NET 5.0 a novějších podporovaný.

Změnit popis

Počínaje rozhraním .NET Framework 4.6.1 řeší přepínač kompatibility Switch.System.Windows.Forms.DontSupportReentrantFilterMessage možné výjimky IndexOutOfRangeException při zavolání zprávy Application.FilterMessage s vlastní implementací IMessageFilter.PreFilterMessage. Další informace naleznete v tématu Zmírnění: Vlastní Implementace IMessageFilter.PreFilterMessage.

V .NET Core a .NET 5.0 a novějších se přepínač Switch.System.Windows.Forms.DontSupportReentrantFilterMessage nepodporuje.

Verze představena

3.0

Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.

Kategorie

Windows Forms

Ovlivněná rozhraní API


Přepínač kompatibility EnableVisualStyleValidation není podporován.

Přepínač kompatibility Switch.System.Windows.Forms.EnableVisualStyleValidation není ve Windows Forms v .NET Core nebo .NET 5.0 a novějších podporovaný.

Změnit popis

V rozhraní .NET Framework přepínač kompatibility Switch.System.Windows.Forms.EnableVisualStyleValidation povolil aplikaci vyjádřit nesouhlas s ověřováním vizuálních stylů zadaných v číselném formátu.

V .NET Core a .NET 5.0 a novějších se přepínač Switch.System.Windows.Forms.EnableVisualStyleValidation nepodporuje.

Zavedená verze

3.0

Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.

Kategorie

Windows Forms

Ovlivněná rozhraní API

  • Žádný

Přepínač kompatibility UseLegacyContextMenuStripSourceControlValue není podporován.

Přepínač kompatibility Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue, který byl zaveden v rozhraní .NET Framework 4.7.2, není ve Windows Forms v .NET Core nebo .NET 5.0 a novějších podporovaný.

Změnit popis

Počínaje rozhraním .NET Framework 4.7.2 umožňuje přepínač kompatibility Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue vývojáři vyjádřit nesouhlas s novým chováním vlastnosti ContextMenuStrip.SourceControl, která nyní vrací odkaz na správu zdrojového kódu. Předchozí chování vlastnosti bylo, že vracelo null. Další informace naleznete v tématu <AppContextSwitchOverrides> element.

V .NET Core a .NET 5.0 a novějších se přepínač Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue nepodporuje.

Zavedená verze

3.0

Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.

Kategorie

Windows Forms

Ovlivněná rozhraní API


Přepínač kompatibility UseLegacyImages se nepodporuje.

Přepínač kompatibility Switch.System.Windows.Forms.UseLegacyImages, který byl zaveden v rozhraní .NET Framework 4.8, není ve Windows Forms v .NET Core nebo .NET 5.0 a novějších podporovaný.

Změnit popis

Počínaje rozhraním .NET Framework 4.8 vyřešil přepínač kompatibility Switch.System.Windows.Forms.UseLegacyImages možné problémy se škálováním obrázků ve scénářích ClickOnce v prostředích s vysokým rozlišením DPI. Pokud je nastavená hodnota true, přepínač umožňuje uživateli obnovit starší měřítko obrázků na displejích s vysokým rozlišením DPI, jejichž měřítko je nastaveno na více než 100%. Další informace najdete v zprávě k vydání verze rozhraní .NET Framework 4.8 na GitHubu.

V .NET Core a .NET 5.0 a novějších se přepínač Switch.System.Windows.Forms.UseLegacyImages nepodporuje.

Představená verze

3.0

Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.

Kategorie

Windows Forms

Ovlivněná rozhraní API

  • Žádný

Šablony About a SplashScreen jsou poškozené

Soubory About.vb a SplashScreen.vb vygenerované sadou Visual Studio obsahují odkazy na typy v oboru názvů My, které nejsou k dispozici .NET Core 3.0 a 3.1.

Zavedená verze

3.0

Změnit popis

.NET Core 3.0 a 3.1 neobsahují úplnou podporu visual basicu My. Referenční vlastnosti u šablon formulářů O a Úvodní obrazovka v sadě Visual Studio pro Windows Forms aplikace ve Visual Basicu odkazují na vlastnosti typu My.Application.Info, které nejsou dostupné.

Podpora My jazyka Visual Basic byla vylepšena v .NET 5, upgradujte projekt na .NET 5 nebo novější.

-nebo-

Opravte chyby kompilátoru v typech About a SplashScreen ve vaší aplikaci. Pomocí třídy System.Reflection.Assembly získejte informace poskytované typem My.Application.Info. Tady je k dispozici přímý port obou formulářů.

Spropitné

Toto je ukázkový kód a neoptimalizovaný. Seznam atributů by se měl ukládat do mezipaměti, aby se zkrátila doba načítání formuláře.

o

Imports System.Reflection

Public NotInheritable Class About

    Private Sub about_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Set the title of the form.
        Dim applicationTitle As String = Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyTitleAttribute)()?.Title

        If String.IsNullOrEmpty(applicationTitle) Then
            applicationTitle = System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().GetName().Name)
        End If

        Me.Text = String.Format("About {0}", applicationTitle)
        ' Initialize all of the text displayed on the About Box.
        ' TODO: Customize the application's assembly information in the "Application" pane of the project
        '    properties dialog (under the "Project" menu).
        Me.LabelProductName.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyProductAttribute)()?.Product, "")
        Me.LabelVersion.Text = String.Format("Version {0}", Assembly.GetExecutingAssembly().GetName().Version)
        Me.LabelCopyright.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCopyrightAttribute)()?.Copyright, "")
        Me.LabelCompanyName.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCompanyAttribute)()?.Company, "")
        Me.TextBoxDescription.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyDescriptionAttribute)()?.Description, "")
    End Sub

    Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click
        Me.Close()
    End Sub

End Class

Splash screen

Imports System.Reflection

Public NotInheritable Class SplashScreen

    Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Set up the dialog text at runtime according to the application's assembly information.  

        'TODO: Customize the application's assembly information in the "Application" pane of the project
        '  properties dialog (under the "Project" menu).

        'Application title
        Dim appTitle As String = Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyTitleAttribute)()?.Title

        If String.IsNullOrEmpty(appTitle) Then
            appTitle = System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().GetName().Name)
        End If

        ApplicationTitle.Text = appTitle

        Dim versionValue = Assembly.GetExecutingAssembly().GetName().Version

        'Format the version information using the text set into the Version control at design time as the
        '  formatting string.  This allows for effective localization if desired.
        '  Build and revision information could be included by using the following code and changing the
        '  Version control's designtime text to "Version {0}.{1:00}.{2}.{3}" or something similar.  See
        '  String.Format() in Help for more information.
        '
        '    Version.Text = System.String.Format(Version.Text, versionValue.Major, versionValue.Minor, versionValue.Build, versionValue.Revision)

        Version.Text = System.String.Format(Version.Text, versionValue.Major, versionValue.Minor)

        'Copyright info
        Copyright.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCopyrightAttribute)()?.Copyright, "")
    End Sub

End Class

Kategorie

Visual Basic Windows Forms

Ovlivněná rozhraní API

Žádný


Typy v oboru názvů Microsoft.VisualBasic.ApplicationServices nejsou k dispozici.

Typy v oboru názvů Microsoft.VisualBasic.ApplicationServices nejsou k dispozici.

Představená verze

.NET Core 3.0

Změnit popis

Typy v oboru názvů Microsoft.VisualBasic.ApplicationServices byly k dispozici v rozhraní .NET Framework. Nejsou dostupné v .NET Core 3.0 – 3.1.

Typy byly odebrány, aby se zabránilo zbytečným závislostem sestavení nebo zásadním změnám v následujících verzích.

Tento obor názvů byl přidán v .NET 5, upgradujte projekt na .NET 5 nebo novější.

-nebo-

Pokud váš kód závisí na použití typů Microsoft.VisualBasic.ApplicationServices a jejich členů, můžete být schopni použít odpovídající typ nebo člen v knihovně tříd .NET. Některé členy System.Environment a System.Security.Principal.WindowsIdentity například poskytují ekvivalentní funkce vlastnostem třídy Microsoft.VisualBasic.ApplicationServices.User.

Kategorie

Visual Basic

Ovlivněná rozhraní API


Typy v oboru názvů Microsoft.VisualBasic.Devices nejsou k dispozici.

Typy v oboru názvů Microsoft.VisualBasic.Devices nejsou k dispozici.

Nově zavedená verze

.NET Core 3.0

Změnit popis

Typy v oboru názvů Microsoft.VisualBasic.Devices byly k dispozici v rozhraní .NET Framework. Nejsou dostupné v .NET Core 3.0 – 3.1.

Typy byly odebrány, aby se zabránilo zbytečným závislostem na sestavení nebo nekompatibilním změnám v následujících verzích.

Tento obor názvů byl přidán v .NET 5, upgradujte projekt na .NET 5 nebo novější.

-nebo-

Pokud váš kód závisí na použití typů Microsoft.VisualBasic.Devices a jejich členů, můžete být schopni použít odpovídající typ nebo člen v knihovně tříd .NET. Například ekvivalentní funkce třídy Microsoft.VisualBasic.Devices.Clock poskytuje typy System.DateTime a System.Environment a ekvivalentní funkce Microsoft.VisualBasic.Devices.Ports třídy jsou poskytovány typy v oboru názvů System.IO.Ports.

Kategorie

Visual Basic

Ovlivněná rozhraní API


Typy v oboru názvů Microsoft.VisualBasic.MyServices nejsou k dispozici.

Typy v oboru názvů Microsoft.VisualBasic.MyServices nejsou k dispozici.

Zavedená verze

.NET Core 3.0

Změnit popis

Typy v oboru názvů Microsoft.VisualBasic.MyServices byly k dispozici v rozhraní .NET Framework. Nejsou dostupné v .NET Core 3.0 – 3.1.

Typy byly odebrány, aby se zabránilo zbytečným závislostem sestavení nebo zlomovým změnám v následujících verzích.

Tento obor názvů byl přidán v .NET 5, upgradujte projekt na .NET 5 nebo novější.

-nebo-

Pokud váš kód závisí na použití typů a jejich členů z Microsoft.VisualBasic.MyServices, existují k nim odpovídající typy a členy v knihovně tříd .NET. Následuje mapování Microsoft.VisualBasic.MyServices typů k jejich ekvivalentním typům knihoven tříd .NET:

Typ Microsoft.VisualBasic.MyServices Typ knihovny tříd .NET
ClipboardProxy System.Windows.Clipboard pro aplikace WPF, System.Windows.Forms.Clipboard pro aplikace Windows Forms
FileSystemProxy Typy v jmenném prostoru System.IO
RegistryProxy Typy týkající se registru v prostoru názvů Microsoft.Win32
SpecialDirectoriesProxy Environment.GetFolderPath

Kategorie

Visual Basic

Ovlivněná rozhraní API


Viz také