.NET Framework 4.8.x'e geçiş için değişiklikleri yeniden hedefleme

Bu makalede,.NET Framework 4.8 ve 4.8.1'de sunulan uygulama uyumluluğu sorunları listelenmektedir.

.NET Framework 4.8

Temel

Yönetilen şifreleme sınıfları FIPS modunda ŞifrelemeException oluşturmaz

Ayrıntılar

.NET Framework 4.7.2 ve önceki sürümlerinde, sistem şifreleme kitaplıkları FIPS modunda yapılandırıldığında gibi CryptographicException yönetilen şifreleme sağlayıcısı sınıfları SHA256Managed bir oluşturur. Yönetilen sürümler FIPS (Federal Bilgi İşleme Standartları) 140-2 sertifikasına tabi olmadığından ve FIPS kurallarına göre onaylanmadığı düşünülen şifreleme algoritmalarını engellediğinden bu özel durumlar oluşturulur. Birkaç geliştiricinin geliştirme makineleri FIPS modunda olduğundan, bu özel durumlar genellikle yalnızca üretim sistemlerinde oluşturulur. .NET Framework 4.8 ve sonraki sürümleri hedefleyen uygulamalar otomatik olarak daha yeni, rahat ilkeye geçer, böylece bu gibi durumlarda varsayılan olarak artık a CryptographicException atılır. Bunun yerine, yönetilen şifreleme sınıfları şifreleme işlemlerini bir sistem şifreleme kitaplığına yönlendirir. Bu ilke değişikliği, geliştirici ortamları ile üretim ortamları arasındaki kafa karıştırıcı olabilecek farkları etkili bir şekilde ortadan kaldırır ve yerel bileşenlerin ve yönetilen bileşenlerin aynı şifreleme ilkesi altında çalışmasını sağlar.

Öneri

Bu davranış istenmeyen bir davranışsa, uygulama yapılandırma dosyanızın çalışma zamanı> bölümüne aşağıdaki AppContextSwitchOverrides yapılandırma ayarını <ekleyerek bunu geri alabilir ve önceki davranışı CryptographicException FIPS modunda oluşturacak şekilde geri yükleyebilirsiniz:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=true" />
</runtime>

Uygulamanız .NET Framework 4.7.2 veya önceki sürümleri hedeflediyse, uygulama yapılandırma dosyanızın çalışma zamanı> bölümüne aşağıdaki AppContextSwitchOverrides yapılandırma ayarını <ekleyerek de bu değişikliği kabul edebilirsiniz:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Veri Akışı Adı Değer
Kapsam Edge
Sürüm 4.8
Tür Yeniden Hedefleme

Etkilenen API’ler

Windows Forms

.NET 4.8 için Windows Forms denetimlerinde erişilebilirlik geliştirmeleri

Ayrıntılar

Windows Forms Framework, Windows Forms müşterilerini daha iyi desteklemek için erişilebilirlik teknolojileriyle çalışma şeklini geliştirmeye devam etmektedir. Bunlar aşağıdaki değişiklikleri içerir:

  • Yüksek Karşıtlık modunda ekranı iyileştirmeye yönelik değişiklikler.
  • Ekran Okuyucusu ile etkileşimde yapılan değişiklikler.
  • Erişilebilir hiyerarşisindeki değişiklikler (UI Otomasyonu ağaçta gezinmeyi geliştirme).

Öneri

Bu değişiklikleri kabul etme veya geri çevirme Uygulamanın bu değişikliklerden yararlanabilmesi için .NET Framework 4.8 üzerinde çalışması gerekir. Uygulama, aşağıdaki yollardan biriyle bu değişiklikleri kabul edebilir:

  • .NET Framework 4.8'i hedeflemek için yeniden derlenir. Bu erişilebilirlik değişiklikleri .NET Framework 4.8'i hedefleyen Windows Forms uygulamalarında varsayılan olarak etkindir.
  • .NET Framework 4.7.2 veya önceki sürümünü hedefler ve aşağıdaki AppContext anahtarını<runtime> uygulama yapılandırma dosyasının bölümüne ekleyerek ve aşağıdaki örnekte gösterildiği gibi olarak olarak ayarlayarak falseeski erişilebilirlik davranışlarından vazgeçer.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
  </startup>
  <runtime>
    <!-- AppContextSwitchOverrides value attribute is in the form of 'key1=true/false;key2=true/false  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false" />
  </runtime>
</configuration>

.NET Framework 4.8'de eklenen erişilebilirlik özelliklerini kabul etmek için .NET Framework 4.7.1 ve 4.7.2'nin erişilebilirlik özelliklerini de kabul etmeniz gerektiğini unutmayın. .NET Framework 4.8'i hedefleyen ve eski erişilebilirlik davranışını korumak isteyen uygulamalar, bu AppContext anahtarını trueaçıkça olarak olarak ayarlayarak eski erişilebilirlik özelliklerinin kullanımını kabul edebilir. Klavye Araç İpucu çağırma desteğinin etkinleştirilmesi için satırın Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false AppContextSwitchOverrides değerine eklenmesi gerekir:

<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false;Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false" />

Bu özelliğin etkinleştirilmesi için .NET Framework 4.7.1 - 4.8'in yukarıda belirtilen erişilebilirlik özelliklerini kabul etmeniz gerektiğini unutmayın. Ayrıca, erişilebilirlik özelliklerinden herhangi biri kabul edilmese ancak araç ipucu görüntüleme özelliği kabul edilirse, bu özelliklere ilk erişimde bir çalışma zamanı NotSupportedException oluşturulur. Özel durum iletisi, klavye Aracının İpuçları 3. düzey erişilebilirlik iyileştirmelerinin etkinleştirilmesini gerektirdiğini gösterir.

Yüksek Karşıtlık temalarında işletim sistemi tanımlı renklerin kullanımı

  • Geliştirilmiş yüksek karşıtlıklı temalar.

Geliştirilmiş Ekran Okuyucusu desteği

Geliştirilmiş CheckedListBox Erişilebilirlik desteği

  • Denetim için CheckedListBox geliştirilmiş Ekran Okuyucusu desteği. Klavyeyi kullanarak denetime CheckedListBox gittiğinızda Ekran Okuyucusu öğeyi CheckedListBox odaklar ve duyurur.
  • Boş bir CheckedListBox denetimi artık denetim odaklandığında ilk sanal öğe için çizilmiş bir odak dikdörtgeni içerir.

Geliştirilmiş ComboBox Erişilebilirlik desteği

  • UI Otomasyonu bildirimleri ve diğer UI Otomasyonu özelliklerini kullanabilme özelliğiyle denetim için ComboBox UI Otomasyonu desteği etkinleştirildi. Geliştirilmiş DataGridView Erişilebilirlik desteği

  • UI Otomasyonu bildirimleri ve diğer UI Otomasyonu özelliklerini kullanabilme özelliğiyle denetim için DataGridView UI Otomasyonu desteği etkinleştirildi.

  • veya DataGridViewTextBoxEditingControl öğesine karşılık gelen DataGridViewComboBoxEditingControl UI Otomasyonu öğesi artık karşılık gelen düzenleme hücresinin alt öğesidir.

Geliştirilmiş LinkLabel Erişilebilirlik desteği

  • Geliştirilmiş LinkLabel denetim erişilebilirliği: İlgili LinkLabel denetim devre dışı bırakılırsa Ekran Okuyucusu bağlantının devre dışı durumunu duyurur.

Geliştirilmiş ProgressBar Erişilebilirlik desteği

  • UI Otomasyonu bildirimleri ve diğer UI Otomasyonu özelliklerini kullanabilme özelliğiyle denetim için ProgressBar UI Otomasyonu desteği etkinleştirildi. Geliştiriciler artık Ekran Okuyucusu'nun ilerleme durumunu belirtmek için duyurabileceği UI Otomasyonu bildirimleri kullanabilir. UI otomasyonu bildirim olayları da dahil olmak üzere UI otomasyonu olaylarına genel bakış için bkz. UI Otomasyonu Olaylara Genel Bakış.

Geliştirilmiş PropertyGrid Erişilebilirlik desteği

  • UI Otomasyonu bildirimleri ve diğer UI Otomasyonu özelliklerini kullanabilme özelliğiyle denetim için PropertyGrid UI Otomasyonu desteği etkinleştirildi.
  • Şu anda düzenlenen özelliğe karşılık gelen UI Otomasyonu öğesi artık ilgili özellik öğesinin UI Otomasyonu öğesinin alt öğesidir.
  • Üst denetim kategori görünümüne ayarlandıysa, UI Otomasyonu özellik öğesi artık ilgili kategori öğesinin PropertyGrid alt öğesi olur.

Geliştirilmiş ToolStrip desteği

  • UI Otomasyonu bildirimleri ve diğer UI Otomasyonu özelliklerini kullanabilme özelliğiyle denetim için ToolStrip UI Otomasyonu desteği etkinleştirildi.
  • Öğeler arasında ToolStrip geliştirilmiş gezinti.
  • Öğeler modunda Ekran Okuyucusu odağı kaybolmaz ve gizli öğelere gitmez.

Geliştirilmiş Görsel ipuçları

  • Boş CheckedListBox bir denetim artık odağı aldığında bir odak göstergesi görüntüler. Not: Ui otomasyonu desteği çalışma zamanındaki denetimler için etkinleştirilir ancak tasarım zamanında kullanılmaz. UI otomasyonuna genel bakış için bkz. UI Otomasyonu Genel Bakış.

Denetimlerin Aracı İpuçları klavyeyle çağrılır

  • Denetim araç ipucu artık denetimi klavyeyle odaklayarak çağrılabilir. Bu özelliğin uygulama için açıkça etkinleştirilmesi gerekir (bkz . "Bu değişiklikleri kabul etme veya devre dışı bırakma")
Veri Akışı Adı Değer
Kapsam Ana
Sürüm 4.8
Tür Yeniden Hedefleme

Windows Presentation Foundation (WPF)

WPF'de erişilebilirlik geliştirmeleri

Ayrıntılar

Yüksek Karşıtlık geliştirmeleri

  • Denetimin Expander odağı artık görünür durumdadır. .NET Framework'ün önceki sürümlerinde değildi.
  • ve içindeki CheckBoxRadioButton metinlerin ne zaman seçildiğini denetler, artık önceki .NET Framework sürümlerine göre daha kolay görülebilir.
  • Devre dışı bırakılmış bir metnin kenarlığı artık devre dışı ComboBox bırakılmış metinle aynı renktedir. .NET Framework'ün önceki sürümlerinde değildi.
  • Devre dışı ve odaklanmış düğmeler artık doğru tema rengini kullanıyor. .NET Framework'ün önceki sürümlerinde bunu yapmadılar.
  • Artık bir ComboBox denetimin stili olarak ayarlandığında ToolBar.ComboBoxStyleKeyaçılan düğme görünür. .NET Framework'ün önceki sürümlerinde değildi.
  • Denetimdeki DataGrid sıralama göstergesi oku artık tema renklerini kullanıyor. .NET Framework'ün önceki sürümlerinde yoktu.
  • Varsayılan köprü stili artık fare üzerinde doğru tema rengine dönüşür. .NET Framework'ün önceki sürümlerinde yoktu.
  • Radyo düğmeleri üzerindeki Klavye odağı artık görünür durumdadır. .NET Framework'ün önceki sürümlerinde değildi.
  • Denetimin DataGrid onay kutusu sütunu artık klavye odağı geri bildirimi için beklenen renkleri kullanıyor. .NET Framework'ün önceki sürümlerinde yoktu.
  • Klavye odağı görselleri artık ve ListBox denetimlerinde ComboBox görünür. .NET Framework'ün önceki sürümlerinde değildi.

Ekran okuyucu etkileşimi geliştirmeleri

  • Expander denetimleri artık ekran okuyucular tarafından doğru bir şekilde grup (genişletme/daraltma) olarak duyurulur.
  • DataGridCell denetimleri artık ekran okuyucular tarafından veri kılavuzu hücresi (yerelleştirilmiş) olarak doğru şekilde duyurulur.
  • Ekran okuyucular artık düzenlenebilir ComboBoxbir öğesinin adını duyurur.
  • PasswordBox denetimleri artık ekran okuyucular tarafından "görünümde öğe yok" olarak duyuruldu.

LiveRegion desteği

Ekran Okuyucusu gibi ekran okuyucular, kullanıcıların bir uygulamanın kullanıcı arabirimini (UI) anlamasına yardımcı olur ve genellikle odak noktası olan ui öğesini açıklar. Ancak, kullanıcı arabirimi öğesi ekranın herhangi bir yerinde değişirse ve odak olamıyorsa, kullanıcı bilgilendirilmeyebilir ve önemli bilgileri kaçırabilir. LiveRegions bu sorunu çözmek için amaçlanıyor. Bir geliştirici, ekran okuyucuyu veya başka bir UI Otomasyonu istemcisini kullanıcı arabirimi öğesinde önemli bir değişiklik yapıldığını bildirmek için bunları kullanabilir. Ardından ekran okuyucu, kullanıcıya bu değişikliği nasıl ve ne zaman bildireceğine karar verebilir. LiveSetting özelliği, ekran okuyucunun kullanıcı arabiriminde yapılan değişikliği kullanıcıya bildirmenin ne kadar önemli olduğunu bilmesini de sağlar.

Öneri

Bu değişiklikleri kabul etme veya geri çevirme

Uygulamanın bu değişikliklerden yararlanabilmesi için .NET Framework 4.7.1 veya sonraki sürümlerinde çalışması gerekir. Uygulama, bu değişikliklerden aşağıdaki yollardan biriyle yararlanabilir:

  • Hedef .NET Framework 4.7.1. Bu, önerilen yaklaşımdır. Bu erişilebilirlik değişiklikleri ,NET Framework 4.7.1 veya sonraki sürümleri hedefleyen WPF uygulamalarında varsayılan olarak etkindir.

  • Aşağıdaki örnekte gösterildiği gibi, uygulama yapılandırma dosyasının bölümüne aşağıdaki AppContext Anahtarını<runtime> ekleyerek ve olarak ayarlayarak falseeski erişilebilirlik davranışlarını geri alır.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
      </startup>
      <runtime>
        <!-- AppContextSwitchOverrides value attribute is in the form of 'key1=true/false;key2=true/false'  -->
        <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false" />
      </runtime>
    </configuration>
    

.NET Framework 4.7.1 veya üstünü hedefleyen ve eski erişilebilirlik davranışını korumak isteyen uygulamalar, bu AppContext anahtarını trueaçıkça olarak olarak ayarlayarak eski erişilebilirlik özelliklerinin kullanımını kabul edebilir. UI otomasyonuna genel bakış için bkz. UI Otomasyonu Genel Bakış.

Veri Akışı Adı Değer
Kapsam Ana
Sürüm 4.7.1
Tür Yeniden Hedefleme

Etkilenen API’ler

TextBox/PasswordBox donatıcı olmayan seçime SelectionTextBrush ortak özelliği ekleme

Ayrıntılar

ve PasswordBoxiçin TextBox donatıcı tabanlı olmayan metin seçimi kullanan WPF uygulamalarında, geliştiriciler artık seçilen metnin işlenmesini değiştirmek için yeni eklenen SelectionTextBrush özelliğini ayarlayabilir. Varsayılan olarak, bu renk ile HighlightTextBrushKeydeğişir. Donatıcı tabanlı olmayan metin seçimi etkinleştirilmediyse, bu özellik hiçbir şey yapmaz.

Öneri

Donatıcı tabanlı olmayan metin seçimi etkinleştirildikten sonra, seçili metnin görünümünü değiştirmek için ve SelectionTextBrush özelliğini kullanabilirsinizPasswordBox.SelectionTextBrush. Bu, XAML kullanılarak elde edilebilir:

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
Veri Akışı Adı Değer
Kapsam Ana
Sürüm 4.8
Tür Yeniden Hedefleme

Etkilenen API’ler

HwndHost artık DPI değişiklikleri sırasında child-HWND'i doğru şekilde yeniden boyutlandırıyor

Ayrıntılar

.NET Framework 4.7.2 ve önceki sürümlerde WPF İzleyici Başına Algılama modunda çalıştırıldığında, içinde HwndHost barındırılan denetimler, uygulamaları bir monitörden diğerine taşırken olduğu gibi DPI değişikliklerinden sonra doğru boyutlandırılmamıştı. Bu düzeltme, barındırılan denetimlerin uygun şekilde boyutlandırılmasını sağlar.

Öneri

Uygulamanın bu değişikliklerden yararlanabilmesi için .NET Framework 4.7.2 veya sonraki sürümlerinde çalışması ve aşağıdaki örnekte gösterildiği gibi uygulama yapılandırma dosyasının falsebölümünde aşağıdaki AppContext Anahtarını<runtime> olarak ayarlayarak bu davranışı kabul etmesi gerekir.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
</startup>
<runtime>
<!-- AppContextSwitchOverrides value attribute is in the form of &#39;key1=true/false;key2=true/false  -->
<AppContextSwitchOverrides value="Switch.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater=false" />
</runtime>
</configuration>
Veri Akışı Adı Değer
Kapsam Ana
Sürüm 4.8
Tür Yeniden Hedefleme

Windows Workflow Foundation (WF)

Windows Workflow Foundation (WF) iş akışı tasarımcısında erişilebilirlik iyileştirmeleri

Ayrıntılar

Windows Workflow Foundation (WF) iş akışı tasarımcısı erişilebilirlik teknolojileriyle çalışma şeklini geliştiriyor. Bu geliştirmeler aşağıdaki değişiklikleri içerir:

  • Bazı denetimlerde sekme sırası soldan sağa ve yukarıdan aşağıya olarak değiştirilir:
  • Etkinlik için bağıntı verilerini ayarlamak için bağıntıyı InitializeCorrelation başlat penceresi
  • , , SendSendReplyve ReceiveReply etkinlikleri için Receiveiçerik tanımı penceresi
  • Klavye aracılığıyla daha fazla işlev kullanılabilir:
  • Bir etkinliğin özellikleri düzenlenirken, özellik grupları ilk kez odaklandıklarında klavyeyle daraltılabilir.
  • Uyarı simgelerine artık klavyeyle erişilebilir.
  • Özellikler penceresi Diğer Özellikler düğmesine artık klavyeyle erişilebilir.
  • Klavye kullanıcıları artık İş Akışı Tasarım Aracı Bağımsız Değişkenler ve Değişkenler bölmelerindeki üst bilgi öğelerine erişebilir.
  • Odaklanmış öğelerin görünürlüğü iyileştirildi, örneğin:
  • İş Akışı Tasarım Aracı ve etkinlik tasarımcıları tarafından kullanılan veri kılavuzlarına satır ekleme.
  • ve SendReply etkinliklerindeki ReceiveReply alanlar arasında sekme tuşuyla gezinme.
  • Değişkenler veya bağımsız değişkenler için varsayılan değerleri ayarlama
  • Ekran okuyucular artık doğru şekilde tanıyabilir:
  • İş akışı tasarımcısında ayarlanan kesme noktaları.
  • FlowSwitch<T>, FlowDecisionve CorrelationScope etkinlikleri.
  • Etkinliğin Receive içeriği.
  • Etkinliğin InvokeMethod Hedef Türü.
  • Etkinlikteki TryCatch Özel Durum birleşik giriş kutusu ve Finally bölümü.
  • İleti Türü birleşik giriş kutusu, Bağıntı Başlatıcıları Ekle penceresindeki bölücü, İçerik Tanımı penceresi ve mesajlaşma etkinliklerindeki CorrelatesOn Defintion penceresi (Receive, Send, SendReplyve ReceiveReply).
  • Durum makinesi geçişleri ve geçiş hedefleri.
  • Etkinliklerle ilgili FlowDecision ek açıklamalar ve bağlayıcılar.
  • Etkinlikler için bağlam (sağ tıklama) menüleri.
  • Özellik değeri düzenleyicileri, Aramayı Temizle düğmesi, Kategoriye göre ve Alfabetik sıralama düğmeleri ve özellikler kılavuzundaki İfade Düzenleyicisi iletişim kutusu.
  • İş Akışı Tasarım Aracı yakınlaştırma yüzdesi.
  • ve Pick etkinliklerindeki Parallel ayırıcı.
  • Etkinlik InvokeDelegate .
  • Sözlük etkinlikleri (Microsoft.Activities.AddToDictionary<TKey,TValue>, vb Microsoft.Activities.RemoveFromDictionary<TKey,TValue>.) için Türleri Seç penceresi.
  • Gözat ve .NET Türünü Seç penceresi.
  • İş Akışı Tasarım Aracı içerik haritaları.
  • Yüksek Karşıtlık temalarını seçen kullanıcılar, İş Akışı Tasarım Aracı görünürlüğünde ve öğeler arasındaki daha iyi karşıtlık oranları ve odak öğeleri için kullanılan daha belirgin seçim kutuları gibi denetimlerinde birçok geliştirme görür.

Öneri

Yeniden barındırılan iş akışı tasarımcısına sahip bir uygulamanız varsa, uygulamanız şu eylemlerden birini gerçekleştirerek bu değişikliklerden yararlanabilir:

  • .NET Framework 4.7.1'i hedeflemek için uygulamanızı yeniden derleyin. Bu erişilebilirlik değişiklikleri varsayılan olarak etkindir.
  • Uygulamanız .NET Framework 4.7 veya önceki sürümleri hedeflediyse ancak .NET Framework 4.7.1 üzerinde çalışıyorsa, app.config dosyasının bölümüne aşağıdaki AppContext anahtarını<runtime> ekleyerek bu eski erişilebilirlik davranışlarını geri çevirebilir ve aşağıdaki örnekte gösterildiği gibi olarak ayarlayabilirsiniz false.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/>
  </startup>
  <runtime>
    <!-- AppContextSwitchOverrides value attribute is in the form of 'key1=true/false;key2=true/false  -->
    <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false" />
  </runtime>
</configuration>

.NET Framework 4.7.1 veya üstünü hedefleyen ve eski erişilebilirlik davranışını korumak isteyen uygulamalar, bu AppContext anahtarını trueaçıkça olarak olarak ayarlayarak eski erişilebilirlik özelliklerinin kullanımını kabul edebilir.

Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.7.1
Tür Yeniden Hedefleme

SHA1'den SHA256'ya değiştirilen semboller için iş akışı XAML sağlama toplamları

Ayrıntılar

Visual Studio ile hata ayıklamayı desteklemek için İş Akışı çalışma zamanı, karma algoritması kullanarak bir iş akışı XAML dosyası için sağlama toplamı oluşturur. .NET Framework 4.6.2 ve önceki sürümlerinde iş akışı sağlama toplamı karması, FIPS özellikli sistemlerde sorunlara neden olan MD5 algoritmasını kullandı. .NET Framework 4.7'den başlayarak varsayılan algoritma SHA1 olarak değiştirildi. .NET Framework 4.8'den başlayarak varsayılan algoritma SHA256 olarak değiştirildi.

Öneri

Kodunuz iş akışı örneklerini yükleyemiyorsa veya sağlama toplamı hatası nedeniyle uygun simgeleri bulamıyorsa, "Switch.System.Activities.UseSHA1HashForDebuggerSymbols" anahtarını olarak ayarlamayı AppContexttruedeneyin. Kod:

System.AppContext.SetSwitch("Switch.System.Activities.UseSHA1HashForDebuggerSymbols", true);

Veya yapılandırmada:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
  </runtime>
</configuration>
Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.8
Tür Yeniden Hedefleme

İş Akışı XOML tanımı ve SqlTrackingService önbellek anahtarları MD5'ten SHA256'ya değiştirildi

Ayrıntılar

içindeki İş Akışı Çalışma Zamanı, XOML'de tanımlanan iş akışı tanımlarının önbelleğini tutar. SqlTrackingService ayrıca dizeler tarafından anahtarlanan bir önbellek tutar. Bu önbellekler sağlama toplamı karma değeri içeren değerlere göre anahtarlanır. .NET Framework 4.7.2 ve önceki sürümlerinde bu sağlama toplamı karması, FIPS özellikli sistemlerde sorunlara neden olan MD5 algoritmasını kullanıyordu. .NET Framework 4.8'den başlayarak, kullanılan algoritma SHA256'dır. İş Akışı Çalışma Zamanı ve SqlTrackingService her başlatıldığında değerler yeniden hesaplandığından, bu değişiklikle ilgili bir uyumluluk sorunu olmamalıdır. Bununla birlikte, müşterilerin gerekirse eski karma algoritmasının kullanımına geri dönmelerine olanak sağlamak için ilginç değerler sağladık.

Öneri

Bu değişiklik iş akışları yürütülürken bir sorun oluşturuyorsa anahtarlardan birini veya her ikisini birden ayarlamayı AppContext deneyin:

  • "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" true.
  • "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey" true. Kod:
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);

Veya yapılandırma dosyasında (nesneyi oluşturan WorkflowRuntime uygulamanın yapılandırma dosyasında olması gerekir):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.8
Tür Yeniden Hedefleme

İş Akışı XOML dosya sağlama toplamları MD5'ten SHA256'ya değiştirildi

Ayrıntılar

Visual Studio ile XOML tabanlı iş akışlarında hata ayıklamayı desteklemek için, XOML dosyaları içeren iş akışı projeleri derlendiğinde, XOML dosyasının içeriğinin sağlama toplamı değer WorkflowMarkupSourceAttribute.MD5Digest olarak oluşturulan koda eklenir. .NET Framework 4.7.2 ve önceki sürümlerinde bu sağlama toplamı karması, FIPS özellikli sistemlerde sorunlara neden olan MD5 algoritmasını kullanıyordu. .NET Framework 4.8'den başlayarak, kullanılan algoritma SHA256'dır. WorkflowMarkupSourceAttribute.MD5Digest ile uyumlu olmak için, oluşturulan sağlama toplamının yalnızca ilk 16 baytı kullanılır. Bu, hata ayıklama sırasında sorunlara neden olabilir. Projenizi yeniden oluşturmanız gerekebilir.

Öneri

Projenizi yeniden oluşturmak sorunu çözmezse, "Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum" anahtarını true olarak ayarlamayı AppContext deneyin. Kodda:

System.AppContext.SetSwitch("Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum", true);

Veya bir yapılandırma dosyasında (kullandığınız MSBuild.exe için MSBuild.exe.config içinde olması gerekir):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Veri Akışı Adı Değer
Kapsam İkincil
Sürüm 4.8
Tür Yeniden Hedefleme

.NET Framework 4.8.1

.NET Framework 4.8.1'de uygulama uyumluluğu sorunları uygulanmadı.