.NET Framework'ten .NET Core'a geçiş için hataya neden olan değişiklikler
Bir uygulamayı .NET Framework'ten .NET Core sürüm 1.0 ile 3.1 sürümlerine geçiriyorsanız, bu makalede listelenen hataya neden olan değişiklikler sizi etkileyebilir. Hataya neden olan değişiklikler kategoriye göre ve bu kategoriler içinde tanıtıldıkları .NET Core sürümüne göre gruplandırılır.
Not
Bu makale, .NET Framework ile .NET Core arasındaki hataya neden olan değişikliklerin tam listesi değildir. En önemli hataya neden olan değişiklikler, farkında olduğumuzda buraya eklenir.
Core .NET kitaplıkları
- UseShellExecute varsayılan değerinde değişiklik
- IDispatchImplAttribute API kaldırıldı
- FileSystemInfo.Attributes tarafından unauthorizedAccessException oluşturuldu
- Bozuk işlem durumu özel durumlarını işleme desteklenmiyor
- UriBuilder özellikleri artık baştaki karakterlerin başına eklenmez
- Process.StartInfo, başlatmadığınız işlemler için InvalidOperationException oluşturur
.NET 8
IDispatchImplAttribute API kaldırıldı
.NET Core 2.1
UseShellExecute varsayılan değerinde değişiklik
ProcessStartInfo.UseShellExecute .NET Core üzerinde varsayılan değerine false
sahiptir. .NET Framework'te varsayılan değeridir true
.
Açıklama değiştirildi
Process.Start , örneğin Paint'i başlatan kodla Process.Start("mspaint.exe")
bir uygulamayı doğrudan başlatmanıza olanak tanır. Ayrıca, olarak ayarlanırsa ProcessStartInfo.UseShellExecutetrue
ilişkili bir uygulamayı dolaylı olarak başlatmanıza da olanak tanır. .NET Framework'te için varsayılan değer ProcessStartInfo.UseShellExecute olan değeri, true
.txt dosyaları bu düzenleyiciyle ilişkilendirdiyseniz gibi kodun Process.Start("mytextfile.txt")
Not Defteri başlatacağı anlamına gelir. .NET Framework'te dolaylı olarak bir uygulamanın başlatılmasını önlemek için açıkça olarak false
olarak ayarlamanız ProcessStartInfo.UseShellExecute gerekir. .NET Core'da için ProcessStartInfo.UseShellExecute varsayılan değer şeklindedir false
. Bu, çağrısı yaptığınızda Process.Start
varsayılan olarak ilişkili uygulamaların başlatılmadığı anlamına gelir.
üzerindeki System.Diagnostics.ProcessStartInfo aşağıdaki özellikler yalnızca şu durumlarda ProcessStartInfo.UseShellExecute işlevseldir true
:
- ProcessStartInfo.CreateNoWindow
- ProcessStartInfo.ErrorDialog
- ProcessStartInfo.Verb
- ProcessStartInfo.WindowStyle.
Bu değişiklik performans nedenleriyle .NET Core'da kullanıma sunulmuştur. Genellikle, Process.Start bir uygulamayı doğrudan başlatmak için kullanılır. Bir uygulamayı doğrudan başlatmanın Windows kabuğunu içermesi ve ilişkili performans maliyetine neden olması gerekmez. Bu varsayılan olayı daha hızlı hale getirmek için .NET Core varsayılan değerini ProcessStartInfo.UseShellExecute olarak false
değiştirir. Gerekirse daha yavaş yolu seçebilirsiniz.
Sürüm kullanıma sunulmuştur
2.1
Not
.NET Core'un önceki sürümlerinde Windows UseShellExecute
için uygulanmamıştı.
Önerilen eylem
Uygulamanız eski davranışa bağlıysa, nesnesi üzerinde olarak ayarlanmış true
olarak UseShellExecute çağrısı Process.Start(ProcessStartInfo) yapınProcessStartInfo.
Kategori
Core .NET kitaplıkları
Etkilenen API’ler
.NET Core 1.0
FileSystemInfo.Attributes tarafından unauthorizedAccessException oluşturuldu
.NET Core'da, UnauthorizedAccessException çağıran bir dosya özniteliği değeri ayarlamaya çalıştığında ancak yazma izni olmadığında bir oluşturulur.
Açıklama değiştirildi
.NET Framework'te, ArgumentException çağıran içinde bir dosya özniteliği değeri FileSystemInfo.Attributes ayarlamaya çalıştığında ancak yazma izni olmadığında bir oluşturulur. .NET Core'da bunun yerine bir UnauthorizedAccessException oluşturulur. (.NET Core'da, çağıran geçersiz bir ArgumentException dosya özniteliği ayarlamayı denerse yine de bir oluşturulur.)
Sürüm kullanıma sunulmuştur
1.0
Önerilen eylem
Deyimleri catch
gerektiği gibi yerine veya buna ek olarak bir yakalamak UnauthorizedAccessException için ArgumentExceptiondeğiştirin.
Kategori
Core .NET kitaplıkları
Etkilenen API’ler
Bozuk durum özel durumlarını işleme desteklenmiyor
.NET Core'da bozuk işlem durumu özel durumlarını işleme desteklenmez.
Açıklama değiştirildi
Daha önce, bozuk işlem durumu özel durumları yönetilen kod özel durum işleyicileri tarafından yakalanabiliyordu ve işlenebilirdi, örneğin, C# dilinde try-catch deyimi kullanılarak.
.NET Core 1.0'dan başlayarak, bozuk işlem durumu özel durumları yönetilen kod tarafından işlenemez. Ortak dil çalışma zamanı, yönetilen koda bozuk işlem durumu özel durumları sunmaz.
Sürüm kullanıma sunulmuştur
1.0
Önerilen eylem
Bunun yerine bunlara yol açan durumları ele alarak bozuk işlem durumu özel durumlarını işleme gereğinden kaçının. Bozuk işlem durumu özel durumlarını işlemek kesinlikle gerekliyse, özel durum işleyicisini C veya C++ koduna yazın.
Kategori
Core .NET kitaplıkları
Etkilenen API’ler
- System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute
- legacyCorruptedStateExceptionsPolicy öğesi
UriBuilder özellikleri artık baştaki karakterlerin başına eklenmez
UriBuilder.Fragment artık bir baştaki #
karakterin başına eklenmez ve UriBuilder.Query bir karakter zaten mevcut olduğunda artık bir baş ?
karakterin başına eklenmez.
Açıklama değiştirildi
.NET Framework'te UriBuilder.Fragment ve UriBuilder.Query özellikleri her zaman depolanmakta olan değere sırasıyla bir #
veya ?
karakteri ekler. Bu davranış, dize bu öndeki karakterlerden birini içeriyorsa depolanan değerde birden çok #
veya ?
karaktere neden olabilir. Örneğin, değeri UriBuilder.Fragment olabilir ##main
.
.NET Core 1.0 sürümünden başlayarak, dizenin #
başında zaten varsa, bu özellikler artık veya ?
karakterlerini depolanan değere eklemez.
Sürüm kullanıma sunulmuştur
1.0
Önerilen eylem
Özellik değerlerini ayarlarken artık bu baştaki karakterlerden herhangi birini açıkça kaldırmanız gerekmez. Bu, özellikle değerleri eklerken yararlıdır, çünkü artık baştaki #
veya ?
her eklediğinizde kaldırmak zorunda kalmazsınız.
Örneğin, aşağıdaki kod parçacığı .NET Framework ile .NET Core arasındaki davranış farkını gösterir.
var builder = new UriBuilder();
builder.Query = "one=1";
builder.Query += "&two=2";
builder.Query += "&three=3";
builder.Query += "&four=4";
Console.WriteLine(builder.Query);
- .NET Framework'te çıkış şeklindedir
????one=1&two=2&three=3&four=4
. - .NET Core'da çıkış şeklindedir
?one=1&two=2&three=3&four=4
.
Kategori
Core .NET kitaplıkları
Etkilenen API’ler
Process.StartInfo, başlatmadığınız işlemler için InvalidOperationException oluşturur
Kodunuzun Process.StartInfo başlatılamayan işlemler için özelliğinin okunması bir InvalidOperationExceptionoluşturur.
Açıklama değiştirildi
.NET Framework'te, kodunuzun Process.StartInfo başlatmamış olduğu işlemlerin özelliğine erişmek, sahte ProcessStartInfo bir nesne döndürür. Sahte nesne, dışındaki EnvironmentVariablestüm özellikleri için varsayılan değerleri içerir.
.NET Core 1.0'dan başlayarak, başlatmadığınız bir işlemin özelliğini okursanız Process.StartInfo (yani çağırarak Process.Start), bir InvalidOperationException oluşturulur.
Sürüm kullanıma sunulmuştur
1.0
Önerilen eylem
Kodunuzun Process.StartInfo başlatmadığı işlemler için özelliğine erişin. Örneğin, tarafından Process.GetProcessesdöndürülen işlemler için bu özelliği okumayın.
Kategori
Core .NET kitaplıkları
Etkilenen API’ler
Şifreleme
.NET Core 2.1
SignedCms.ComputeSignature boole parametresine uyuldu
.NET Core'da yönteminin Boole silent
parametresine SignedCms.ComputeSignature(CmsSigner, Boolean) uyulur. Bu parametre olarak ayarlandıysa true
PIN istemi gösterilmez.
Açıklama değiştirildi
.NET Framework'te yönteminin silent
SignedCms.ComputeSignature(CmsSigner, Boolean) parametresi yoksayılır ve sağlayıcı tarafından gerekirse her zaman bir PIN istemi gösterilir. .NET Core'da parametresine silent
uyulur ve olarak ayarlanırsa true
, sağlayıcı tarafından gerekli olsa bile hiçbir zaman bir PIN istemi gösterilmez.
SÜRÜM 2.1'de .NET Core'a CMS/PKCS #7 iletileri desteği eklendi.
Sürüm kullanıma sunulmuştur
2.1
Önerilen eylem
Gerekirse bir PIN isteminin görüntülendiğinden emin olmak için masaüstü uygulamalarının boole parametresini çağırıp SignedCms.ComputeSignature(CmsSigner, Boolean) olarak ayarlaması false
gerekir. Sonuçta elde edilen davranış, sessiz bağlamın orada devre dışı bırakılıp bırakılmadığına bakılmaksızın .NET Framework ile aynıdır.
Kategori
Şifreleme
Etkilenen API’ler
MSBuild
.NET Core 3.0
Kaynak bildirim dosyası adı değişikliği
.NET Core 3.0'dan başlayarak, varsayılan durumda MSBuild kaynak dosyaları için farklı bir bildirim dosyası adı oluşturur.
Sürüm kullanıma sunulmuştur
3.0
Açıklama değiştirildi
.NET Core 3.0'dan önce, proje dosyasındaki bir EmbeddedResource
öğe için , ManifestResourceName
LogicalName
veya DependentUpon
meta veriler belirtilmemişse, MSBuild deseninde <RootNamespace>.<ResourceFilePathFromProjectRoot>.resources
bir bildirim dosyası adı oluşturdu. Proje dosyasında tanımlanmamışsa RootNamespace
, varsayılan olarak proje adı olur. Örneğin, kök proje dizininde Form1.resx adlı bir kaynak dosyası için oluşturulan bildirim adı MyProject.Form1.resources idi.
.NET Core 3.0'dan başlayarak, bir kaynak dosyası aynı ada sahip bir kaynak dosyayla (örneğin, Form1.resx ve Form1.cs) birlikte bulunursa, MSBuild, düzende <Namespace>.<ClassName>.resources
bildirim dosyası adını oluşturmak için kaynak dosyadaki tür bilgilerini kullanır. Ad alanı ve sınıf adı, birlikte bulunan kaynak dosyasındaki ilk türden ayıklanır. Örneğin, Form1.cs adlı bir kaynak dosyayla birlikte bulunan Form1.resx adlı kaynak dosyası için oluşturulan bildirim adı MyNamespace.Form1.resources şeklindedir. Dikkate almak gereken önemli nokta, dosya adının ilk bölümünün .NET Core'un önceki sürümlerinden (MyProject yerine MyNamespace) farklı olmasıdır.
Not
Proje dosyasındaki bir EmbeddedResource
öğede belirtilen , ManifestResourceName
veya DependentUpon
meta verileriniz LogicalName
varsa, bu değişiklik bu kaynak dosyasını etkilemez.
Bu hataya neden olan değişiklik, özelliğin .NET Core projelerine eklenmesiyle EmbeddedResourceUseDependentUponConvention
ortaya çıkmıştır. Varsayılan olarak, kaynak dosyaları açıkça bir .NET Core proje dosyasında listelenmez, bu nedenle oluşturulan .resources dosyasının nasıl adlandırılacağını belirtmek için meta verileri yokturDependentUpon
. EmbeddedResourceUseDependentUponConvention
varsayılan olan olarak ayarlandığındatrue
, MSBuild birlikte bulunan bir kaynak dosyayı arar ve bu dosyadan bir ad alanı ve sınıf adı ayıklar. olarak false
ayarlarsanızEmbeddedResourceUseDependentUponConvention
, MSBuild bildirim adını önceki davranışa göre oluşturur ve bu da ve göreli dosya yolunu birleştirirRootNamespace
.
Önerilen eylem
Çoğu durumda, geliştirici tarafından herhangi bir eylem gerekmez ve uygulamanız çalışmaya devam etmelidir. Ancak, bu değişiklik uygulamanızı bozarsa şunları yapabilirsiniz:
Kodunuzu yeni bildirim adını bekleyecek şekilde değiştirin.
Proje dosyanızda olarak ayarlayarak
EmbeddedResourceUseDependentUponConvention
false
yeni adlandırma kuralını geri çevirme.<PropertyGroup> <EmbeddedResourceUseDependentUponConvention>false</EmbeddedResourceUseDependentUponConvention> </PropertyGroup>
Kategori
MSBuild
Etkilenen API’ler
Yok
Ağ
.NET Core 2.0
WebClient.CancelAsync her zaman hemen iptal etmez
.NET Core 2.0'dan başlayarak, yanıt getirilmeye başladıysa çağrı WebClient.CancelAsync() isteği hemen iptal etmez.
Açıklama değiştirildi
Daha önce, çağrı isteği WebClient.CancelAsync() hemen iptal etti. .NET Core 2.0'dan başlayarak çağrı, WebClient.CancelAsync() yalnızca yanıt getirilmeye başlamadıysa isteği hemen iptal eder. Yanıt getirilmeye başladıysa, istek ancak tam bir yanıt okunduktan sonra iptal edilir.
BU değişiklik, API'nin WebClient lehine HttpClientkullanım dışı bırakıldığı için uygulandı.
Sürüm kullanıma sunulmuştur
2.0
Önerilen eylem
System.Net.Http.HttpClient kullanım dışı olan yerine System.Net.WebClientsınıfını kullanın.
Kategori
Ağ
Etkilenen API’ler
Windows Forms
Windows Forms desteği sürüm 3.0'da .NET Core'a eklendi. Bir Windows Forms uygulamasını .NET Framework'ten .NET Core'a geçiriyorsanız, burada listelenen hataya neden olan değişiklikler uygulamanızı etkileyebilir.
- Denetimler kaldırıldı
- Araç ipucu gösteriliyorsa CellFormatting olayı tetiklenmiyor
- Control.DefaultFont, Segoe UI 9 pt olarak değiştirildi
- FolderBrowserDialog'un modernizasyonu
- SerializableAttribute bazı Windows Forms türlerinden kaldırıldı
- AllowUpdateChildControlIndexForTabControls uyumluluk anahtarı desteklenmiyor
- DomainUpDown.UseLegacyScrolling uyumluluk anahtarı desteklenmiyor
- DoNotLoadLatestRichEditControl uyumluluk anahtarı desteklenmiyor
- DoNotSupportSelectAllShortcutInMultilineTextBox uyumluluk anahtarı desteklenmiyor
- DontSupportReentrantFilterMessage uyumluluk anahtarı desteklenmiyor
- EnableVisualStyleValidation uyumluluk anahtarı desteklenmiyor
- UseLegacyContextMenuStripSourceControlValue uyumluluk anahtarı desteklenmiyor
- UseLegacyImages uyumluluk anahtarı desteklenmiyor
- Visual Basic için Hakkında ve SplashScreen şablonları bozuk
- Microsoft.VisualBasic.ApplicationServices ad alanında türler kullanılamıyor
- Microsoft.VisualBasic.Devices ad alanında türler kullanılamıyor
- Microsoft.VisualBasic.MyServices ad alanında türler kullanılamıyor
.NET Core 3.1
Denetimler kaldırıldı
.NET Core 3.1'den başlayarak, bazı Windows Forms denetimleri artık kullanılamaz.
Açıklama değiştirildi
.NET Core 3.1'den başlayarak, çeşitli Windows Forms denetimleri artık kullanılamaz. .NET Framework 2.0'da daha iyi tasarıma ve desteğe sahip değiştirme denetimleri kullanıma sunulmuştur. Kullanım dışı bırakılan denetimler daha önce tasarımcı araç kutularından kaldırılmıştı ancak hala kullanılabilir durumdaydı.
Aşağıdaki türler artık kullanılamaz:
- 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
Sürüm kullanıma sunulmuştur
3.1
Önerilen eylem
Kaldırılan her denetimin önerilen bir değiştirme denetimi vardır. Aşağıdaki tabloya bakın:
Denetim kaldırıldı (API) | Önerilen değiştirme | Kaldırılan ilişkili API'ler |
---|---|---|
ContextMenu | ContextMenuStrip | |
DataGrid | Datagridview | DataGridCell, DataGridRow, DataGridTableCollection, DataGridColumnCollection, DataGridTableStyle, DataGridColumnStyle, DataGridLineStyle, DataGridParentRowsLabel, DataGridParentRowsLabelStyle, DataGridBoolColumn, DataGridTextBox, GridColumnStylesCollection, GridTableStylesCollection, HitTestType |
Mainmenu | MenuStrip | |
Menü | ToolStripDropDown, ToolStripDropDownMenu | Menuıtemcollection |
MenuItem | Toolstripmenuıtem | |
ToolBar | ToolStrip | ToolBarAppearance |
Toolbarbutton | Toolstripbutton | ToolBarButtonClickEventArgs, ToolBarButtonClickEventHandler, ToolBarButtonStyle, ToolBarTextAlign |
Kategori
Windows Forms
Etkilenen API’ler
- 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
Araç ipucu gösteriliyorsa CellFormatting olayı tetiklenmiyor
DataGridView Artık bir farenin üzerine gelindiğinde ve klavye aracılığıyla seçildiğinde hücrenin metin ve hata araç ipuçlarını gösterir. Bir araç ipucu gösteriliyorsa, DataGridView.CellFormatting olay tetiklenmez.
Açıklama değiştirildi
.NET Core 3.1'in ShowCellToolTips öncesinde, DataGridView özelliği true
bir hücrenin metni için bir araç ipucu ve fareyle üzerine gelindiğinde oluşan hatalar için araç ipucu gösterilmişti. Klavye aracılığıyla bir hücre seçildiğinde araç ipuçları gösterilmedi (örneğin, Sekme tuşu, kısayol tuşları veya ok gezintisi kullanılarak). Kullanıcı bir hücreyi düzenlemişse ve daha sonra düzenleme modundayken DataGridView , özelliği ayarlanmamış bir hücrenin ToolTipText üzerine gelindiğinde, hücrenin metnini hücrede görüntülenecek şekilde biçimlendirmek için bir CellFormatting olay tetiklendi.
.NET Core 3.1'den başlayarak, .true
NET Core 3.1'den başlayarak, ShowCellToolTipsDataGridView bir hücrenin metni için araç ipuçlarını ve yalnızca hücre vurgulandığında değil, aynı zamanda klavye aracılığıyla seçildiğinde hataları gösteren bir erişilebilirlik standartlarını karşılamak için. Bu değişikliğin bir sonucu olarak, CellFormatting özelliği ayarlanmamış ToolTipText hücreler düzenleme modundayken DataGridView üzerine gelindiğinde olay tetiklenmez. Vurgulanan hücrenin içeriği hücrede görüntülenmek yerine araç ipucu olarak gösterildiğinden olay tetiklenmez.
Sürüm kullanıma sunulmuştur
3.1
Önerilen eylem
Düzenleme modundayken DataGridView olaya bağlı CellFormatting olan tüm kodları yeniden düzenleyin.
Kategori
Windows Forms
Etkilenen API’ler
Hiçbiri
.NET Core 3.0
Varsayılan denetim yazı tipi Segoe UI 9 pt olarak değiştirildi
Açıklama değiştirildi
.NET Framework'te Control.DefaultFont özelliği olarak Microsoft Sans Serif 8 pt
ayarlanmıştır. Aşağıdaki resimde, varsayılan yazı tipini kullanan bir pencere gösterilmektedir.
.NET Core 3.0'dan başlayarak varsayılan yazı tipi olarak ayarlanır Segoe UI 9 pt
(ile aynı yazı tipi SystemFonts.MessageBoxFont). Bu değişikliğin sonucu olarak formlar ve denetimler, yeni varsayılan yazı tipinin daha büyük boyutunu hesaba katmak için yaklaşık %27 daha büyük boyutlandırılır. Örneğin:
Bu değişiklik, Windows kullanıcı deneyimi (UX) yönergeleriyle uyumlu olacak şekilde yapılmıştır.
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
Formların ve denetimlerin boyutundaki değişiklik nedeniyle uygulamanızın doğru şekilde işlendiğini doğrulayın.
Özgün yazı tipini korumak için formunuzun varsayılan yazı tipini olarak Microsoft Sans Serif 8 pt
ayarlayın. Örneğin:
public MyForm()
{
InitializeComponent();
Font = new Font(new FontFamily("Microsoft Sans Serif"), 8f);
}
Kategori
- Windows Forms
Etkilenen API’ler
Yok.
FolderBrowserDialog'un modernizasyonu
FolderBrowserDialog.NET Core için Windows Forms uygulamalarında denetim değişti.
Açıklama değiştirildi
.NET Framework'te, Windows forms denetim için FolderBrowserDialog aşağıdaki iletişim kutusunu kullanır:
.NET Core 3.0'da Windows Forms, Windows Vista'da kullanıma sunulan daha yeni bir COM tabanlı denetim kullanır:
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
İletişim kutusu otomatik olarak yükseltilir.
Özgün iletişim kutusunu korumak istiyorsanız, aşağıdaki kod parçasında FolderBrowserDialog.AutoUpgradeEnabled gösterildiği gibi, iletişim kutusunu göstermeden önce özelliğini false
olarak ayarlayın:
var dialog = new FolderBrowserDialog();
dialog.AutoUpgradeEnabled = false;
dialog.ShowDialog();
Kategori
Windows Forms
Etkilenen API’ler
SerializableAttribute bazı Windows Forms türlerinden kaldırıldı
, SerializableAttribute bilinen ikili serileştirme senaryoları olmayan bazı Windows Forms sınıflarından kaldırılmıştır.
Açıklama değiştirildi
Aşağıdaki türler .NET Framework'te ile SerializableAttribute dekore edilmiştir, ancak özniteliği .NET Core'da kaldırılmıştır:
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
Geçmişte bu serileştirme mekanizmasının ciddi bakım ve güvenlik kaygıları vardı. Türlerde bakım yapmak SerializableAttribute
, bu türlerin sürümden sürüme serileştirme değişiklikleri ve çerçeveden çerçeveye serileştirme değişiklikleri için test edilmesi gerektiği anlamına gelir. Bu, bu türleri geliştirmeyi zorlaştırır ve bakımını yapmak maliyetli olabilir. Bu türlerde bilinen ikili serileştirme senaryoları yoktur ve bu da özniteliği kaldırmanın etkisini en aza indirir.
Daha fazla bilgi için bkz . İkili serileştirme.
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
Bu türlerin serileştirilebilir olarak işaretlenmesine bağlı olabilecek tüm kodları güncelleştirin.
Kategori
Windows Forms
Etkilenen API’ler
- Hiçbiri
AllowUpdateChildControlIndexForTabControls uyumluluk anahtarı desteklenmiyor
Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
Uyumluluk anahtarı.NET Framework 4.6 ve sonraki sürümlerde Windows Forms'da desteklenir, ancak .NET Core veya .NET 5.0 ve sonraki sürümlerde desteklenmez.
Açıklama değiştirildi
.NET Framework 4.6 ve sonraki sürümlerinde bir sekme seçildiğinde denetim koleksiyonu yeniden sıralanır. Uyumluluk anahtarı, Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
bir uygulamanın bu davranış istenmeyen durumlarda bu yeniden sıralamayı atlamasına olanak tanır.
.NET Core ve .NET 5.0 ve sonraki sürümlerinde Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
anahtar desteklenmez.
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
Anahtarı kaldırın. Anahtar desteklenmez ve alternatif işlevler kullanılamaz.
Kategori
Windows Forms
Etkilenen API’ler
- Hiçbiri
DomainUpDown.UseLegacyScrolling uyumluluk anahtarı desteklenmiyor
Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
.NET Framework 4.7.1'de kullanıma sunulan uyumluluk anahtarı, .NET Core veya .NET 5.0 ve sonraki sürümlerde Windows Forms'da desteklenmez.
Açıklama değiştirildi
.NET Framework 4.7.1'den başlayarak, uyumluluk anahtarı geliştiricilerin Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
bağımsız DomainUpDown.DownButton() ve DomainUpDown.UpButton() eylemlerden vazgeçmesine izin verdi. Anahtar, DomainUpDown.UpButton() bağlam metni mevcutsa öğesinin yoksayıldığı ve geliştiricinin eylemden önce DomainUpDown.UpButton() denetimde eylem kullanması DomainUpDown.DownButton() gereken eski davranışı geri yükledi. Daha fazla bilgi için bkz <. AppContextSwitchOverrides> öğesi.
.NET Core ve .NET 5.0 ve sonraki sürümlerinde Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
anahtar desteklenmez.
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
Anahtarı kaldırın. Anahtar desteklenmez ve alternatif işlevler kullanılamaz.
Kategori
Windows Forms
Etkilenen API’ler
DoNotLoadLatestRichEditControl uyumluluk anahtarı desteklenmiyor
Switch.System.Windows.Forms.UseLegacyImages
.NET Framework 4.7.1'de kullanıma sunulan uyumluluk anahtarı, .NET Core veya .NET 5.0 ve sonraki sürümlerde Windows Forms'da desteklenmez.
Açıklama değiştirildi
.NET Framework 4.6.2 ve önceki sürümlerde, RichTextBox denetim Win32 RichEdit denetimi v3.0'ın örneğini oluşturur ve .NET Framework 4.7.1'i hedefleyen uygulamalar için denetim RichEdit RichTextBox v4.1 örneğini oluşturur ( msftedit.dll). Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl
Uyumluluk anahtarı, .NET Framework 4.7.1 ve sonraki sürümleri hedefleyen uygulamaların yeni RichEdit v4.1 denetimini devre dışı bırakmasına ve bunun yerine eski RichEdit v3 denetimini kullanmasına izin vermek için kullanıma sunulmuştur.
.NET Core ve .NET 5.0 ve sonraki sürümlerde Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl
anahtar desteklenmez. Denetimin RichTextBox yalnızca yeni sürümleri desteklenir.
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
Anahtarı kaldırın. Anahtar desteklenmez ve alternatif işlevler kullanılamaz.
Kategori
Windows Forms
Etkilenen API’ler
DoNotSupportSelectAllShortcutInMultilineTextBox uyumluluk anahtarı desteklenmiyor
Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
.NET Framework 4.6.1'de kullanıma sunulan uyumluluk anahtarı, .NET Core ve .NET 5.0 ve sonraki sürümlerde Windows Forms'da desteklenmez.
Açıklama değiştirildi
.NET Framework 4.6.1'den başlayarak, denetimdeki TextBox Ctrl + A kısayol tuşunun seçilmesi tüm metni seçti. .NET Framework 4.6 ve önceki sürümlerde, Textbox.ShortcutsEnabled ve özelliklerin her ikisi de olarak ayarlandıysatrue
, Ctrl + A kısayol tuşu seçildiğinde tüm metin seçilemiyordu.TextBox.Multiline Özgün Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
davranışı korumak için uyumluluk anahtarı .NET Framework 4.6.1'de kullanıma sunulmuştur. Daha fazla bilgi için bkz. TextBox.ProcessCmdKey.
.NET Core ve .NET 5.0 ve sonraki sürümlerde Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
anahtar desteklenmez.
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
Anahtarı kaldırın. Anahtar desteklenmez ve alternatif işlevler kullanılamaz.
Kategori
Windows Forms
Etkilenen API’ler
- Hiçbiri
DontSupportReentrantFilterMessage uyumluluk anahtarı desteklenmiyor
Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
.NET Framework 4.6.1'de kullanıma sunulan uyumluluk anahtarı, .NET Core ve .NET 5.0 ve sonraki sürümlerde Windows Forms'da desteklenmez.
Açıklama değiştirildi
.NET Framework 4.6.1'den başlayarak, uyumluluk anahtarı ileti Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
özel IMessageFilter.PreFilterMessage bir uygulamayla çağrıldığında Application.FilterMessage olası IndexOutOfRangeException özel durumları giderir. Daha fazla bilgi için bkz . Azaltma: Özel IMessageFilter.PreFilterMessage Uygulamaları.
.NET Core ve .NET 5.0 ve sonraki sürümlerinde Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
anahtar desteklenmez.
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
Anahtarı kaldırın. Anahtar desteklenmez ve alternatif işlevler kullanılamaz.
Kategori
Windows Forms
Etkilenen API’ler
EnableVisualStyleValidation uyumluluk anahtarı desteklenmiyor
Switch.System.Windows.Forms.EnableVisualStyleValidation
Uyumluluk anahtarı.NET Core veya .NET 5.0 ve sonraki sürümlerde Windows Forms'da desteklenmez.
Açıklama değiştirildi
.NET Framework'te uyumluluk anahtarı, Switch.System.Windows.Forms.EnableVisualStyleValidation
bir uygulamanın sayısal biçimde sağlanan görsel stilleri doğrulamasını geri çevirmesine izin verdi.
.NET Core ve .NET 5.0 ve sonraki sürümlerinde Switch.System.Windows.Forms.EnableVisualStyleValidation
anahtar desteklenmez.
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
Anahtarı kaldırın. Anahtar desteklenmez ve alternatif işlevler kullanılamaz.
Kategori
Windows Forms
Etkilenen API’ler
- Hiçbiri
UseLegacyContextMenuStripSourceControlValue uyumluluk anahtarı desteklenmiyor
Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
.NET Framework 4.7.2'de kullanıma sunulan uyumluluk anahtarı, .NET Core veya .NET 5.0 ve sonraki sürümlerde Windows Forms'da desteklenmez.
Açıklama değiştirildi
.NET Framework 4.7.2'den başlayarak, Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
uyumluluk anahtarı geliştiricinin özelliğin yeni davranışını ContextMenuStrip.SourceControl geri çevirmesine olanak tanır ve bu da kaynak denetimine bir başvuru döndürür. özelliğinin önceki davranışı döndürmekti null
. Daha fazla bilgi için bkz <. AppContextSwitchOverrides> öğesi.
.NET Core ve .NET 5.0 ve sonraki sürümlerinde Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
anahtar desteklenmez.
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
Anahtarı kaldırın. Anahtar desteklenmez ve alternatif işlevler kullanılamaz.
Kategori
Windows Forms
Etkilenen API’ler
UseLegacyImages uyumluluk anahtarı desteklenmiyor
Switch.System.Windows.Forms.UseLegacyImages
.NET Framework 4.8'de kullanıma sunulan uyumluluk anahtarı, .NET Core veya .NET 5.0 ve sonraki sürümlerde Windows Forms'da desteklenmez.
Açıklama değiştirildi
.NET Framework 4.8'den başlayarak, Switch.System.Windows.Forms.UseLegacyImages
uyumluluk anahtarı yüksek DPI ortamlarındaki ClickOnce senaryolarındaki olası görüntü ölçeklendirme sorunlarını giderdi. olarak ayarlandığında true
, anahtar kullanıcının ölçeği %100'den büyük olarak ayarlanmış olan yüksek DPI ekranlarında eski görüntü ölçeklendirmesini geri yüklemesine olanak tanır. Daha fazla bilgi için bkz . GitHub'da .NET Framework 4.8 Sürüm Notları .
.NET Core ve .NET 5.0 ve sonraki sürümlerinde Switch.System.Windows.Forms.UseLegacyImages
anahtar desteklenmez.
Sürüm kullanıma sunulmuştur
3.0
Önerilen eylem
Anahtarı kaldırın. Anahtar desteklenmez ve alternatif işlevler kullanılamaz.
Kategori
Windows Forms
Etkilenen API’ler
- Hiçbiri
Hakkında ve SplashScreen şablonları bozuk
About.vb
Visual Studio tarafından oluşturulan ve SplashScreen.vb
dosyaları, ad alanında My
.NET Core 3.0 ve 3.1 bulunmayan türlere başvurular içerir.
Sürüm kullanıma sunulmuştur
3.0
Açıklama değiştirildi
.NET Core 3.0 ve 3.1 tam Visual Basic My
desteği içermez. Visual Basic Windows Forms uygulamaları için Visual Studio'daki Hakkında ve SplashScreen form şablonları, kullanılamayan türdeki özelliklere My.Application.Info
başvurur.
Önerilen eylem
Visual Basic My
desteği .NET 5'te geliştirildi, projenizi .NET 5 veya sonraki bir sürüme yükseltin.
-veya-
Uygulamanızdaki Hakkında ve SplashScreen türlerindeki derleyici hatalarını düzeltin. System.Reflection.Assembly
türü tarafından sağlanan bilgileri almak için sınıfını My.Application.Info
kullanın. Her iki formun da düz bağlantı noktası burada mevcuttur.
İpucu
Bu örnek koddur ve iyileştirilmemiştir. Form yükleme süresini azaltmak için öznitelik listesi önbelleğe alınmalıdır.
Hakkında
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
Splashscreen
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
Kategori
Visual Basic Windows Forms
Etkilenen API’ler
Hiçbiri
Microsoft.VisualBasic.ApplicationServices ad alanında türler kullanılamıyor
Ad alanı içindeki Microsoft.VisualBasic.ApplicationServices türler kullanılamaz.
Sürüm kullanıma sunulmuştur
.NET Core 3.0
Açıklama değiştirildi
Ad alanı içindeki Microsoft.VisualBasic.ApplicationServices türler .NET Framework'te kullanılabilir. .NET Core 3.0 - 3.1'de kullanılamaz.
Gereksiz derleme bağımlılıklarını veya sonraki sürümlerde hataya neden olan değişiklikleri önlemek için türler kaldırıldı.
Önerilen eylem
Bu ad alanı .NET 5'e eklendi, projenizi .NET 5 veya sonraki bir sürüme yükseltin.
-veya-
Kodunuz türlerin Microsoft.VisualBasic.ApplicationServices ve üyelerinin kullanımına bağlıysa, .NET sınıf kitaplığında karşılık gelen bir türü veya üyeyi kullanabilirsiniz. Örneğin, bazı System.Environment ve System.Security.Principal.WindowsIdentity üyeleri sınıfının özelliklerine Microsoft.VisualBasic.ApplicationServices.User eşdeğer işlevler sağlar.
Kategori
Visual Basic
Etkilenen API’ler
Microsoft.VisualBasic.Devices ad alanında türler kullanılamıyor
Ad alanı içindeki Microsoft.VisualBasic.Devices türler kullanılamaz.
Sürüm kullanıma sunulmuştur
.NET Core 3.0
Açıklama değiştirildi
Ad alanı içindeki Microsoft.VisualBasic.Devices türler .NET Framework'te kullanılabilir. .NET Core 3.0 - 3.1'de kullanılamaz.
Gereksiz derleme bağımlılıklarını veya sonraki sürümlerde hataya neden olan değişiklikleri önlemek için türler kaldırıldı.
Önerilen eylem
Bu ad alanı .NET 5'e eklendi, projenizi .NET 5 veya sonraki bir sürüme yükseltin.
-veya-
Kodunuz türlerin Microsoft.VisualBasic.Devices ve üyelerinin kullanımına bağlıysa, .NET sınıf kitaplığında karşılık gelen bir türü veya üyeyi kullanabilirsiniz. Örneğin, sınıfına Microsoft.VisualBasic.Devices.Clock eşdeğer işlevsellik ve System.Environment türleri tarafından System.DateTime sağlanır ve sınıfına Microsoft.VisualBasic.Devices.Ports eşdeğer işlevsellik ad alanı türleri System.IO.Ports tarafından sağlanır.
Kategori
Visual Basic
Etkilenen API’ler
Microsoft.VisualBasic.MyServices ad alanında türler kullanılamıyor
Ad alanı içindeki Microsoft.VisualBasic.MyServices türler kullanılamaz.
Sürüm kullanıma sunulmuştur
.NET Core 3.0
Açıklama değiştirildi
Ad alanı içindeki Microsoft.VisualBasic.MyServices türler .NET Framework'te kullanılabilir. .NET Core 3.0 - 3.1'de kullanılamaz.
Gereksiz derleme bağımlılıklarını veya sonraki sürümlerde hataya neden olan değişiklikleri önlemek için türler kaldırıldı.
Önerilen eylem
Bu ad alanı .NET 5'e eklendi, projenizi .NET 5 veya sonraki bir sürüme yükseltin.
-veya-
Kodunuz Microsoft.VisualBasic.MyServices türlerinin ve bunların üyelerinin kullanımına bağlıysa, .NET sınıf kitaplığında karşılık gelen türler ve üyeler vardır. Aşağıda, Microsoft.VisualBasic.MyServices türlerinin eşdeğer .NET sınıf kitaplığı türleriyle eşlemesi yer alır:
Microsoft.VisualBasic.MyServices türü | .NET sınıf kitaplığı türü |
---|---|
ClipboardProxy | System.Windows.Clipboard WPF uygulamaları için, System.Windows.Forms.Clipboard Windows Forms uygulamaları için |
FileSystemProxy | Ad alanında System.IO türler |
RegistryProxy | Ad alanında Microsoft.Win32 kayıt defteriyle ilgili türler |
SpecialDirectoriesProxy | Environment.GetFolderPath |
Kategori
Visual Basic
Etkilenen API’ler
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin