.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ı

.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.UseShellExecutetrueiliş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 falseolarak 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.Startvarsayı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:

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 falsedeğ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ı.

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

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

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


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

Ö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

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 truePIN istemi gösterilmez.

Açıklama değiştirildi

.NET Framework'te yönteminin silentSignedCms.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

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ı falsegerekir. 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 , ManifestResourceNameLogicalNameveya DependentUpon meta veriler belirtilmemişse, MSBuild deseninde <RootNamespace>.<ResourceFilePathFromProjectRoot>.resourcesbir 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>.resourcesbildirim 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 , ManifestResourceNameveya DependentUpon meta verileriniz LogicalNamevarsa, 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 falseayarlarsanızEmbeddedResourceUseDependentUponConvention, MSBuild bildirim adını önceki davranışa göre oluşturur ve bu da ve göreli dosya yolunu birleştirirRootNamespace.

Ç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 EmbeddedResourceUseDependentUponConventionfalse yeni adlandırma kuralını geri çevirme.

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

Kategori

MSBuild

Etkilenen API’ler

Yok


.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

System.Net.Http.HttpClient kullanım dışı olan yerine System.Net.WebClientsınıfını kullanın.

Kategori

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.

.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:

Sürüm kullanıma sunulmuştur

3.1

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


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, .trueNET 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

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 ptayarlanmıştır. Aşağıdaki resimde, varsayılan yazı tipini kullanan bir pencere gösterilmektedir.

Default control font in .NET Framework

.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:

Default control font in .NET Core

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

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 ptayarlayı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:

The FolderBrowserDialogControl in the .NET Framework

.NET Core 3.0'da Windows Forms, Windows Vista'da kullanıma sunulan daha yeni bir COM tabanlı denetim kullanır:

The FolderBrowserDialogControl in the .NET Core

Sürüm kullanıma sunulmuştur

3.0

İ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:

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

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

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

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

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

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

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

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

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

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.

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ı.

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ı.

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ı.

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.