Zásadní změny migrace z rozhraní .NET Framework na .NET Core
Pokud migrujete aplikaci z rozhraní .NET Framework do .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. Tady se přidají nejdůležitější zásadní změny, když o nich víme.
Knihovny Core .NET
- Změna výchozí hodnoty UseShellExecute
- Odebere se rozhraní API IDispatchImplAttribute.
- UnauthorizedAccessException vyvolán FileSystemInfo.Attributes
- Zpracování výjimek poškozeného stavu procesu není podporováno.
- Vlastnosti nástroje UriBuilder už nemají předem připravené počáteční znaky.
- Process.StartInfo vyvolá výjimku InvalidOperationException pro procesy, které jste nespusili.
.NET 8
Odebere se rozhraní API IDispatchImplAttribute.
.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 true
její výchozí hodnota .
Změna popisu
Process.Startumožňuje spustit aplikaci přímo, například s kódem, jako Process.Start("mspaint.exe")
je spuštění Malování. Umožňuje také nepřímo spustit přidruženou aplikaci, pokud ProcessStartInfo.UseShellExecute je nastavena na true
. V rozhraní .NET Framework je výchozí hodnota ProcessStartInfo.UseShellExecutetrue
pro , což znamená, že kód, jako Process.Start("mytextfile.txt")
je spuštění 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 .false
V .NET Core je výchozí hodnota pro ProcessStartInfo.UseShellExecutefalse
. To znamená, že přidružené aplikace nejsou ve výchozím nastavení spuštěny při volání Process.Start
.
Následující vlastnosti jsou funkční pouze v těchto true
případech ProcessStartInfo.UseShellExecuteSystem.Diagnostics.ProcessStartInfo:
- ProcessStartInfo.CreateNoWindow
- ProcessStartInfo.ErrorDialog
- ProcessStartInfo.Verb
- ProcessStartInfo.WindowStyle.
Tato změna byla zavedena v .NET Core z důvodů výkonu. Process.Start Obvykle se používá 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 bylo toto 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 UseShellExecute
se pro Windows neimplementoval.
Doporučená akce
Pokud vaše aplikace spoléhá na staré chování, zavolejte Process.Start(ProcessStartInfo) na objekt nastavený UseShellExecute na true
ProcessStartInfo hodnotu.
Kategorie
Knihovny Core .NET
Ovlivněná rozhraní API
.NET Core 1.0
UnauthorizedAccessException vyvolán FileSystemInfo.Attributes
V .NET Core se vyvolá, UnauthorizedAccessException když se volající pokusí nastavit hodnotu atributu souboru, ale nemá oprávnění k zápisu.
Změna popisu
V rozhraní .NET Framework je vyvolán, ArgumentException když se volající pokusí nastavit hodnotu atributu souboru, FileSystemInfo.Attributes ale nemá oprávnění k zápisu. V .NET Core se místo toho vyvolá chyba UnauthorizedAccessException . (V .NET Core je stále vyvolán, ArgumentException pokud se volající pokusí nastavit neplatný atribut souboru.)
Zavedená verze
1.0
Doporučená akce
Podle potřeby upravte všechny catch
příkazy tak, aby zachytály místo UnauthorizedAccessException nebo kromě něj .ArgumentException
Kategorie
Knihovny Core .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ěna popisu
Dříve bylo možné zachytit a zpracovat poškozené výjimky stavu procesu a zpracovávat obslužnými rutinami výjimek spravovaného kódu, například pomocí příkazu try-catch v jazyce C#.
Počínaje verzí .NET Core 1.0 nelze spravovaného kódu zpracovat poškozené výjimky stavu procesu. Modul CLR (Common Language Runtime) nedoručuje do spravovaného kódu poškozené výjimky stavu procesu.
Zavedená verze
1.0
Doporučená akce
Vyhněte se nutnosti zpracovávat poškozené výjimky stavu procesu tím, že řešíte situace, které k nim vedou. 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
Knihovny Core .NET
Ovlivněná rozhraní API
- System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute
- legacyCorruptedStateExceptionsPolicy – element
Vlastnosti nástroje UriBuilder už nemají předem připravené počáteční znaky.
UriBuilder.Fragment už nepředá úvodní #
znak a UriBuilder.Query už nepředá úvodní ?
znak, pokud už existuje.
Změna popisu
V rozhraní .NET Framework UriBuilder.Fragment a UriBuilder.Query vlastnosti vždy předložily #
znak nebo ?
znak na hodnotu, která se ukládá. Toto chování může vést k více #
znakům ?
v uložené hodnotě, pokud řetězec již obsahuje jeden z těchto úvodních znaků. Může se například stát ##main
hodnotou UriBuilder.Fragment .
Počínaje verzí .NET Core 1.0 už tyto vlastnosti nepředpokládají #
uloženou hodnotu ani ?
znaky, pokud je již na začátku řetězce.
Zavedená verze
1.0
Doporučená akce
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í náběr #
ani ?
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
????one=1&two=2&three=3&four=4
výstup . - V .NET Core je
?one=1&two=2&three=3&four=4
výstup .
Kategorie
Knihovny Core .NET
Ovlivněná rozhraní API
Process.StartInfo vyvolá výjimku InvalidOperationException pro procesy, které jste nespusili.
Process.StartInfo Čtení vlastnosti pro procesy, které váš kód nespustí, vyvolá chybu InvalidOperationException.
Změna popisu
V rozhraní .NET Framework se přístup k Process.StartInfo vlastnosti pro procesy, které váš kód nespustí, vrátí fiktivní ProcessStartInfo objekt. 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 Process.StartInfo vlastnost procesu, který jste nespusili (tj. voláním Process.Start), InvalidOperationException vyvolá se vyvolání.
Zavedená verze
1.0
Doporučená akce
Nepřistupujte k Process.StartInfo vlastnosti pro procesy, které váš kód nespusl. Například nečte tuto vlastnost pro procesy vrácené Process.GetProcesses.
Kategorie
Knihovny Core .NET
Ovlivněná rozhraní API
Kryptografie
.NET Core 2.1
Je respektován logický parametr SignedCms.ComputeSignature.
V .NET Core se respektuje logický silent
parametr SignedCms.ComputeSignature(CmsSigner, Boolean) metody. Výzva k zadání kódu PIN se nezobrazí, pokud je tento parametr nastaven na true
hodnotu .
Změna popisu
V rozhraní .NET Framework silent
se parametr SignedCms.ComputeSignature(CmsSigner, Boolean) metody ignoruje a v případě potřeby poskytovatele se vždy zobrazí výzva k zadání kódu PIN. V .NET Core silent
se parametr respektuje 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
Doporučená akce
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
hodnotu . Výsledné chování je stejné jako v rozhraní .NET Framework bez ohledu na to, jestli je v něm neaktivní kontext.
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 ve výchozím případě nástroj MSBuild vygeneruje pro soubory prostředků jiný název souboru manifestu.
Zavedená verze
3,0
Změna popisu
Před .NET Core 3.0, pokud nebyla zadána žádná LogicalName
ManifestResourceName
, nebo DependentUpon
metadata pro EmbeddedResource
položku v souboru projektu, nástroj MSBuild vygeneroval název souboru manifestu ve vzoru <RootNamespace>.<ResourceFilePathFromProjectRoot>.resources
. Pokud RootNamespace
není v souboru projektu definováno, 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ů společně přidělený 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 ve vzoru <Namespace>.<ClassName>.resources
. Obor názvů a název třídy se extrahují z prvního typu v spolulokovaném zdrojovém souboru. Například vygenerovaný název manifestu pro soubor prostředků s názvem Form1.resx , který je společně přidělený 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 LogicalName
, ManifestResourceName
nebo DependentUpon
metadata zadaná pro EmbeddedResource
položku v souboru projektu, tato změna nemá vliv na tento soubor zdroje.
Tato změna způsobující chybu byla zavedena přidáním EmbeddedResourceUseDependentUponConvention
vlastnosti do projektů .NET Core. Ve výchozím nastavení nejsou soubory prostředků explicitně uvedeny v souboru projektu .NET Core, takže nemají žádná DependentUpon
metadata k určení, jak pojmenovat vygenerovaný soubor .resources . Pokud EmbeddedResourceUseDependentUponConvention
je nastavena na true
, což je výchozí, NÁSTROJ MSBuild vyhledá společnělokovaný zdrojový soubor a extrahuje obor názvů a název třídy z daného souboru. Pokud nastavíte EmbeddedResourceUseDependentUponConvention
hodnotu false
, nástroj MSBuild vygeneruje název manifestu podle předchozího chování, které kombinuje RootNamespace
a relativní cestu k souboru.
Doporučená akce
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é zásady vytváření názvů nastavením
EmbeddedResourceUseDependentUponConvention
vfalse
souboru projektu.<PropertyGroup> <EmbeddedResourceUseDependentUponConvention>false</EmbeddedResourceUseDependentUponConvention> </PropertyGroup>
Kategorie
MSBuild
Ovlivněná rozhraní API
–
Sítě
.NET Core 2.0
WebClient.CancelAsync se vždy nezruší okamžitě.
Od verze .NET Core 2.0 volání nezruší požadavek okamžitě, WebClient.CancelAsync() pokud se odpověď začala načítat.
Změna popisu
Dříve volání WebClient.CancelAsync() zrušilo žádost okamžitě. Od verze .NET Core 2.0 volání WebClient.CancelAsync() zruší požadavek okamžitě jenom v případě, že odpověď nezačala načítat. 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 WebClient rozhraní API je zastaralé ve prospěch HttpClient.
Zavedená verze
2.0
Doporučená akce
System.Net.Http.HttpClient Místo třídySystem.Net.WebClient, která je zastaralá, použijte.
Kategorie
Sítě
Ovlivněná rozhraní API
Windows Forms
model Windows Forms podpora byla přidána do .NET Core ve verzi 3.0. Pokud migrujete aplikaci model Windows Forms z rozhraní .NET Framework na .NET Core, můžou zásadní změny uvedené tady ovlivnit vaši aplikaci.
- Odebrané ovládací prvky
- Událost CellFormatting se nevyvolá, pokud je zobrazen popis
- Control.DefaultFont se změnil na Segoe UI 9 pt
- Modernizace složkyBrowserDialog
- SerializableAttribute odebrán z některých typů model Windows Forms
- Přepínač kompatibility AllowUpdateChildControlIndexForTabControls se nepodporuje.
- Přepínač kompatibility DomainUpDown.UseLegacyScrolling se nepodporuje.
- Nepodporovaný přepínač kompatibility DoNotLoadLatestRichEditControl
- Nepodporovaný přepínač kompatibility DoNotSupportSelectAllShortcutInMultilineTextBox
- Přepínač kompatibility DontSupportReentrantFilterMessage není podporován.
- Přepínač kompatibility EnableVisualStyleValidation se nepodporuje.
- Přepínač kompatibility UseLegacyContextMenuStripSourceControlValue se nepodporuje.
- Přepínač kompatibility UseLegacyImages se nepodporuje.
- Šablony about a SplashScreen jsou pro Visual Basic poškozené
- Typy v oboru názvů Microsoft.VisualBasic.ApplicationServices nejsou k dispozici.
- Typy v oboru názvů Microsoft.VisualBasic.Devices nejsou k dispozici.
- Typy v oboru názvů Microsoft.VisualBasic.MyServices nejsou k dispozici.
.NET Core 3.1
Odebrané ovládací prvky
Počínaje verzí .NET Core 3.1 už některé ovládací prvky model Windows Forms nejsou k dispozici.
Změna popisu
Od verze .NET Core 3.1 už nejsou k dispozici různé ovládací prvky model 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:
- ContextMenu
- DataGrid
- DataGrid.HitTestType
- DataGridBoolColumn
- DataGridCell
- DataGridColumnStyle
- DataGridLineStyle
- DataGridParentRowsLabelStyle
- DataGridPreferredColumnWidthTypeConverter
- DataGridTableStyle
- DataGridTextBox
- DataGridTextBoxColumn
- GridColumnStylesCollection
- GridTablesFactory
- GridTableStylesCollection
- IDataGridEditingService
- IMenuEditorService
- MainMenu
- Menu
- Menu.MenuItemCollection
- MenuItem
- ToolBar
- ToolBarAppearance
- ToolBarButton
- ToolBar.ToolBarButtonCollection
- ToolBarButtonClickEventArgs
- ToolBarButtonStyle
- ToolBarTextAlign
Zavedená verze
3.1
Doporučená akce
Každý odebraný ovládací prvek má doporučený náhradní ovládací prvek. Informace najdete v následující tabulce:
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 |
Mainmenu | MenuStrip | |
Nabídka | ToolStripDropDown, ToolStripDropDownMenu | MenuItemCollection |
MenuItem | Toolstripmenuitem | |
ToolBar | ToolStrip | ToolBarAppearance |
Toolbarbutton | Toolstripbutton | ToolBarButtonClickEventArgs, ToolBarButtonClickEventHandler, ToolBarButtonStyle, ToolBarTextAlign |
Kategorie
Windows Forms
Ovlivněná rozhraní API
- System.Windows.Forms.ContextMenu
- System.Windows.Forms.GridColumnStylesCollection
- System.Windows.Forms.GridTablesFactory
- System.Windows.Forms.GridTableStylesCollection
- System.Windows.Forms.IDataGridEditingService
- System.Windows.Forms.MainMenu
- System.Windows.Forms.Menu
- System.Windows.Forms.Menu.MenuItemCollection
- System.Windows.Forms.MenuItem
- System.Windows.Forms.ToolBar
- System.Windows.Forms.ToolBar.ToolBarButtonCollection
- System.Windows.Forms.ToolBarAppearance
- System.Windows.Forms.ToolBarButton
- System.Windows.Forms.ToolBarButtonClickEventArgs
- System.Windows.Forms.ToolBarButtonStyle
- System.Windows.Forms.ToolBarTextAlign
- System.Windows.Forms.DataGrid
- System.Windows.Forms.DataGrid.HitTestType
- System.Windows.Forms.DataGridBoolColumn
- System.Windows.Forms.DataGridCell
- System.Windows.Forms.DataGridColumnStyle
- System.Windows.Forms.DataGridLineStyle
- System.Windows.Forms.DataGridParentRowsLabelStyle
- System.Windows.Forms.DataGridPreferredColumnWidthTypeConverter
- System.Windows.Forms.DataGridTableStyle
- System.Windows.Forms.DataGridTextBox
- System.Windows.Forms.DataGridTextBoxColumn
- System.Windows.Forms.Design.IMenuEditorService
Událost CellFormatting se nevyvolá, pokud je zobrazen popis
Při DataGridView najetí myší myší a po výběru pomocí klávesnice se teď zobrazí popisy textu a chyby buňky. Pokud se zobrazí popis, DataGridView.CellFormatting událost se nevyvolá.
Změna popisu
Před .NET Core 3.1, DataGridView který měl nastavenou ShowCellToolTips vlastnost true
zobrazovat popis textu buňky a chyby při najetí myší na buňku. Popisy nebyly zobrazeny, když byla buňka vybrána pomocí klávesnice (například pomocí klávesy Tab, klávesových zkratek nebo navigace se šipkami). Pokud uživatel upravil buňku a potom, i když DataGridView byl stále v režimu úprav, najedl myší na buňku, která nemá nastavenou ToolTipText vlastnost, CellFormatting byla vyvolána událost, která naformátuje text buňky pro zobrazení v buňce.
Pro splnění standardů přístupnosti počínaje rozhraním .NET Core 3.1, která má vlastnost nastavenou ShowCellToolTips tak, DataGridView aby true
zobrazovala popisy textu buňky a chyby nejen v případě, že je buňka najetá myší, ale také když je vybraná přes klávesnici. V důsledku této změny není událost vyvolána, pokud buňky, CellFormatting které nemají nastavenou ToolTipText vlastnost, jsou najet myší, když DataGridView je 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
Doporučená akce
Refaktoring libovolného CellFormatting kódu, který závisí na události, když DataGridView je v režimu úprav.
Kategorie
Windows Forms
Ovlivněná rozhraní API
Nic
.NET Core 3.0
Výchozí písmo ovládacího prvku se změnilo na Segoe UI 9 pt
Změna popisu
V rozhraní .NET Framework Control.DefaultFont byla vlastnost nastavena na Microsoft Sans Serif 8 pt
hodnotu . Následující obrázek znázorňuje okno, které používá výchozí písmo.
Počínaje verzí .NET Core 3.0 je výchozí písmo nastavené 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 se zohlednila větší velikost nového výchozího písma. Příklad:
Tato změna byla provedena tak, aby odpovídala pokynům pro uživatelské prostředí windows.
Zavedená verze
3,0
Doporučená akce
Vzhledem ke změně velikosti formulářů a ovládacích prvků se ujistěte, že se aplikace správně vykresluje.
Pokud chcete zachovat původní písmo, nastavte výchozí písmo formuláře na Microsoft Sans Serif 8 pt
hodnotu . Příklad:
public MyForm()
{
InitializeComponent();
Font = new Font(new FontFamily("Microsoft Sans Serif"), 8f);
}
Kategorie
- Windows Forms
Ovlivněná rozhraní API
Nezaokrouhlovat.
Modernizace složkyBrowserDialog
Ovládací FolderBrowserDialog prvek se v model Windows Forms aplikacích pro .NET Core změnil.
Změna popisu
V rozhraní .NET Framework používá windows forms pro FolderBrowserDialog ovládací prvek následující dialog:
V rozhraní .NET Core 3.0 používá model Windows Forms novější ovládací prvek založený na modelu COM, který byl zaveden v systému Windows Vista:
Zavedená verze
3,0
Doporučená akce
Dialogové okno se automaticky upgraduje.
Pokud chcete zachovat původní dialogové okno, nastavte FolderBrowserDialog.AutoUpgradeEnabled vlastnost před false
zobrazením dialogového okna, jak je znázorněno následujícím fragmentem 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ů model Windows Forms
Byl SerializableAttribute odebrán z některých model Windows Forms tříd, které nemají žádné známé binární serializace scénáře.
Změna popisu
Následující typy jsou zdobené SerializableAttribute v rozhraní .NET Framework, ale atribut byl odebrán v .NET Core:
System.InvariantComparer
- System.ComponentModel.Design.ExceptionCollection
- System.ComponentModel.Design.Serialization.CodeDomSerializerException
System.ComponentModel.Design.Serialization.CodeDomComponentSerializationService.CodeDomSerializationStore
- System.Drawing.Design.ToolboxItem
System.Resources.ResXNullRef
System.Resources.ResXDataNode
System.Resources.ResXFileRef
- System.Windows.Forms.Cursor
System.Windows.Forms.NativeMethods.MSOCRINFOSTRUCT
System.Windows.Forms.NativeMethods.MSG
Tento mechanismus serializace má v minulosti vážné obavy ohledně údržby a zabezpečení. Údržba SerializableAttribute
typů znamená, že tyto typy musí být testovány na změny serializace verze na verzi a potenciálně změny serializace architektury na architekturu. 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 tématu Binární serializace.
Zavedená verze
3,0
Doporučená akce
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
- Nic
Přepínač kompatibility AllowUpdateChildControlIndexForTabControls se nepodporuje.
Přepínač Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
kompatibility je podporován v model 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ěna popisu
V rozhraní .NET Framework 4.6 a novějších verzích se při výběru karty změní pořadí kolekce ovládacích prvků. Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
Přepínač kompatibility umožňuje aplikaci přeskočit toto změny pořadí, pokud je toto chování nežádoucí.
V .NET Core a .NET 5.0 a novějších Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
se přepínač nepodporuje.
Zavedená verze
3,0
Doporučená akce
Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.
Kategorie
Windows Forms
Ovlivněná rozhraní API
- Nic
Přepínač kompatibility DomainUpDown.UseLegacyScrolling se nepodporuje.
Přepínač Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
kompatibility, který byl zaveden v rozhraní .NET Framework 4.7.1, není podporován v model Windows Forms v .NET Core nebo .NET 5.0 a novější.
Změna popisu
Počínaje rozhraním .NET Framework 4.7.1 Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
umožňuje přechod na kompatibilitu vývojářům vyjádřit nesouhlas s nezávislými DomainUpDown.DownButton() akcemi a DomainUpDown.UpButton() akcemi. Přepínač obnovil starší verzi chování, ve kterém DomainUpDown.UpButton() se ignoruje, pokud je kontextový text k dispozici, a vývojář musí použít DomainUpDown.DownButton() akci na ovládacím prvku před DomainUpDown.UpButton() akcí. Další informace naleznete v tématu <AppContextSwitchOverrides> element.
V .NET Core a .NET 5.0 a novějších Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
se přepínač nepodporuje.
Zavedená verze
3,0
Doporučená akce
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č Switch.System.Windows.Forms.UseLegacyImages
kompatibility, který byl zaveden v rozhraní .NET Framework 4.7.1, není podporován v model Windows Forms v .NET Core nebo .NET 5.0 a novější.
Změna popisu
V rozhraní .NET Framework 4.6.2 a předchozích verzích RichTextBox ovládací prvek Win32 RichEdit v3.0 a pro aplikace, které cílí na rozhraní .NET Framework 4.7.1, RichTextBox vytvoří instance ovládacího prvku RichEdit v4.1 (v msftedit.dll). Přepínač kompatibility byl zaveden tak Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl
, 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 Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl
se přepínač nepodporuje. Podporují se jenom nové verze RichTextBox ovládacího prvku.
Zavedená verze
3,0
Doporučená akce
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 DoNotSupportSelectAllShortcutInMultilineTextBox
Přepínač Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
kompatibility, který byl zaveden v rozhraní .NET Framework 4.6.1, není podporován v model Windows Forms v .NET Core a .NET 5.0 a novější.
Změna popisu
Počínaje rozhraním .NET Framework 4.6.1 vyberte klávesovou zkratku Ctrl + A v ovládacím TextBox prvku vybraný veškerý text. V rozhraní .NET Framework 4.6 a předchozích verzích se po výběru klávesové zkratky Ctrl + A nepodařilo se vybrat veškerý text, pokud byla vlastnost Textbox.ShortcutsEnabled a TextBox.Multiline vlastnosti nastaveny na .true
Přepínač Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
kompatibility byl zaveden v rozhraní .NET Framework 4.6.1, aby se zachovalo původní chování. Další informace najdete tady: TextBox.ProcessCmdKey.
V .NET Core a .NET 5.0 a novějších verzích Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
se přepínač nepodporuje.
Zavedená verze
3,0
Doporučená akce
Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.
Kategorie
Windows Forms
Ovlivněná rozhraní API
- Nic
Přepínač kompatibility DontSupportReentrantFilterMessage není podporován.
Přepínač Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
kompatibility, který byl zaveden v rozhraní .NET Framework 4.6.1, není podporován v model Windows Forms v .NET Core a .NET 5.0 a novější.
Změna popisu
Počínaje rozhraním .NET Framework 4.6.1 Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
řeší přepínač kompatibility možné IndexOutOfRangeException výjimky při Application.FilterMessage zavolání zprávy s vlastní IMessageFilter.PreFilterMessage implementací. Další informace naleznete v tématu Zmírnění: Vlastní IMessageFilter.PreFilterMessage Implementace.
V .NET Core a .NET 5.0 a novějších Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
se přepínač nepodporuje.
Zavedená verze
3,0
Doporučená akce
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 se nepodporuje.
Přepínač Switch.System.Windows.Forms.EnableVisualStyleValidation
kompatibility není podporován v model Windows Forms v .NET Core nebo .NET 5.0 a novějších.
Změna popisu
V rozhraní .NET Framework Switch.System.Windows.Forms.EnableVisualStyleValidation
přepínač kompatibility povolil aplikaci vyjádřit nesouhlas s ověřováním stylů vizuálů zadaných v číselném formátu.
V .NET Core a .NET 5.0 a novějších Switch.System.Windows.Forms.EnableVisualStyleValidation
se přepínač nepodporuje.
Zavedená verze
3,0
Doporučená akce
Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.
Kategorie
Windows Forms
Ovlivněná rozhraní API
- Nic
Přepínač kompatibility UseLegacyContextMenuStripSourceControlValue se nepodporuje.
Přepínač Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
kompatibility, který byl zaveden v rozhraní .NET Framework 4.7.2, není podporován v model Windows Forms v .NET Core nebo .NET 5.0 a novější.
Změna popisu
Počínaje rozhraním .NET Framework 4.7.2 Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
umožňuje vývojáři vyjádřit nesouhlas s novým chováním ContextMenuStrip.SourceControl vlastnosti, která nyní vrací odkaz na správu zdrojového kódu. Předchozí chování vlastnosti bylo vráceno null
. Další informace naleznete v tématu <AppContextSwitchOverrides> element.
V .NET Core a .NET 5.0 a novějších Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
se přepínač nepodporuje.
Zavedená verze
3,0
Doporučená akce
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č Switch.System.Windows.Forms.UseLegacyImages
kompatibility, který byl zaveden v rozhraní .NET Framework 4.8, není podporován v model Windows Forms v .NET Core nebo .NET 5.0 a novější.
Změna popisu
Počínaje rozhraním .NET Framework 4.8 Switch.System.Windows.Forms.UseLegacyImages
vyřešil přepínač kompatibility 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 tato možnost nastavená true
, umožňuje uživateli obnovit starší měřítko image na displejích s vysokým rozlišením DPI, jejichž měřítko je nastaveno na větší než 100 %. Další informace najdete v poznámkách k verzi rozhraní .NET Framework 4.8 na GitHubu.
V .NET Core a .NET 5.0 a novějších Switch.System.Windows.Forms.UseLegacyImages
se přepínač nepodporuje.
Zavedená verze
3,0
Doporučená akce
Odeberte přepínač. Přepínač není podporovaný a není k dispozici žádná alternativní funkce.
Kategorie
Windows Forms
Ovlivněná rozhraní API
- Nic
Šablony About a SplashScreen jsou poškozené
SplashScreen.vb
Soubory About.vb
generované sadou Visual Studio obsahují odkazy na typy v My
oboru názvů, které nejsou k dispozici .NET Core 3.0 a 3.1.
Zavedená verze
3,0
Změna popisu
.NET Core 3.0 a 3.1 neobsahují úplnou podporu jazyka Visual Basic My
. Šablony formulářů About a SplashScreen v sadě Visual Studio pro Visual Basic model Windows Forms referenční vlastnosti aplikací v My.Application.Info
typu, který není k dispozici.
Doporučená akce
Podpora jazyka Visual Basic My
byla vylepšena v .NET 5, upgradujte projekt na .NET 5 nebo novější.
nebo
Opravte chyby kompilátoru v typech About a SplashScreen v aplikaci. System.Reflection.Assembly
Pomocí třídy získáte informace poskytované typemMy.Application.Info
. Tady je k dispozici přímý port obou formulářů.
Tip
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 uživateli
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
Úvodní obrazovka
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 model Windows Forms
Ovlivněná rozhraní API
Nic
Typy v oboru názvů Microsoft.VisualBasic.ApplicationServices nejsou k dispozici.
Typy v Microsoft.VisualBasic.ApplicationServices oboru názvů nejsou k dispozici.
Zavedená verze
.NET Core 3.0
Změna popisu
Typy v Microsoft.VisualBasic.ApplicationServices oboru názvů 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.
Doporučená akce
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í Microsoft.VisualBasic.ApplicationServices typů a jejich členů, můžete v knihovně tříd .NET použít odpovídající typ nebo člena. Někteří System.Environment členové System.Security.Principal.WindowsIdentity například poskytují ekvivalentní funkce vlastnostem Microsoft.VisualBasic.ApplicationServices.User třídy.
Kategorie
Visual Basic
Ovlivněná rozhraní API
Typy v oboru názvů Microsoft.VisualBasic.Devices nejsou k dispozici.
Typy v Microsoft.VisualBasic.Devices oboru názvů nejsou k dispozici.
Zavedená verze
.NET Core 3.0
Změna popisu
Typy v Microsoft.VisualBasic.Devices oboru názvů 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.
Doporučená akce
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í Microsoft.VisualBasic.Devices typů a jejich členů, můžete v knihovně tříd .NET použít odpovídající typ nebo člena. Například ekvivalentní funkce třídy Microsoft.VisualBasic.Devices.Clock jsou poskytovány typy System.EnvironmentSystem.DateTime a ekvivalentní funkce třídy jsou poskytovány Microsoft.VisualBasic.Devices.Ports typy v System.IO.Ports oboru názvů.
Kategorie
Visual Basic
Ovlivněná rozhraní API
Typy v oboru názvů Microsoft.VisualBasic.MyServices nejsou k dispozici.
Typy v Microsoft.VisualBasic.MyServices oboru názvů nejsou k dispozici.
Zavedená verze
.NET Core 3.0
Změna popisu
Typy v Microsoft.VisualBasic.MyServices oboru názvů 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.
Doporučená akce
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.MyServices a jejich členů, jsou v knihovně tříd .NET odpovídající typy a členy. Následuje mapování typů Microsoft.VisualBasic.MyServices na ekvivalentní typy knihoven tříd .NET:
Typ Microsoft.VisualBasic.MyServices | Typ knihovny tříd .NET |
---|---|
ClipboardProxy | System.Windows.Clipboardpro aplikace System.Windows.Forms.Clipboard WPF pro model Windows Forms aplikace |
FileSystemProxy | Typy v System.IO oboru názvů |
RegistryProxy | Typy související s registrem Microsoft.Win32 v oboru názvů |
SpecialDirectoriesProxy | Environment.GetFolderPath |
Kategorie
Visual Basic
Ovlivněná rozhraní API
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro