Condividi tramite


Modifiche di reindirizzamento per la migrazione a .NET Framework 4.8.x

Questo articolo elenca i problemi di compatibilità delle app introdotti in .NET Framework 4.8 e 4.8.1.

.NET Framework 4.8

Nucleo

Le classi di crittografia gestite non generano una CryptographyException in modalità FIPS

Dettagli

In .NET Framework 4.7.2 e versioni precedenti, le classi del provider di crittografia gestito, ad esempio SHA256Managed generano un CryptographicException quando le librerie di crittografia di sistema sono configurate in modalità FIPS. Queste eccezioni vengono generate perché le versioni gestite non sono state sottoposte alla certificazione FIPS (Federal Information Processing Standards) 140-2, nonché per bloccare gli algoritmi crittografici che non sono stati considerati approvati in base alle regole FIPS. Poiché pochi sviluppatori hanno i computer di sviluppo in modalità FIPS, queste eccezioni vengono spesso generate solo nei sistemi di produzione. Le applicazioni destinate a .NET Framework 4.8 e versioni successive passano automaticamente al criterio più recente e rilassato, in modo che un CryptographicException non venga più generato per impostazione predefinita in tali casi. Le classi di crittografia gestite reindirizzano invece le operazioni di crittografia a una libreria di crittografia di sistema. Questa modifica dei criteri rimuove in modo efficace una differenza potenzialmente confusa tra gli ambienti di sviluppo e gli ambienti di produzione e rende i componenti nativi e i componenti gestiti operano con gli stessi criteri di crittografia.

Suggerimento

Se questo comportamento è indesiderato, è possibile disattivarlo e ripristinare il comportamento precedente in modo che venga generato un CryptographicException in modalità FIPS aggiungendo la seguente impostazione di configurazione AppContextSwitchOverrides nella sezione di runtime>< del file di configurazione dell'applicazione.

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

Se l'applicazione è compatibile con .NET Framework 4.7.2 o versioni precedenti, puoi anche scegliere di adottare questa modifica aggiungendo la seguente impostazione di configurazione AppContextSwitchOverrides alla sezione <runtime> del file di configurazione dell'applicazione.

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Nome Valore
Ambito Edge
Versione 4.8
Digitare Reindirizzamento

API interessate

Windows Forms

Miglioramenti dell'accessibilità nei controlli Windows Form per .NET 4.8

Dettagli

Windows Forms Framework continua a migliorare il funzionamento con le tecnologie di accessibilità per supportare meglio i clienti di Windows Form. Di seguito sono riportate le modifiche seguenti:

  • Modifiche per migliorare la visualizzazione durante la modalità a contrasto elevato.
  • Modifiche all'interazione con l'Assistente vocale.
  • Modifiche nella gerarchia Accessibile (miglioramenti nella navigazione attraverso l'albero dell'automazione dell'interfaccia utente).

Suggerimento

Come acconsentire esplicitamente o rifiutare queste modifiche Affinché l'applicazione possa trarre vantaggio da queste modifiche, deve essere eseguita in .NET Framework 4.8. L'applicazione può acconsentire esplicitamente a queste modifiche in uno dei modi seguenti:

  • È stato ricompilato per essere compatibile con il .NET Framework 4.8. Queste modifiche all'accessibilità sono abilitate per impostazione predefinita nelle applicazioni Windows Form destinate a .NET Framework 4.8.
  • È destinato a .NET Framework 4.7.2 o versione precedente e rifiuta esplicitamente i comportamenti di accessibilità legacy aggiungendo l'opzione seguente 'opzione AppContext alla sezione <runtime> del file di configurazione dell'app e impostandola su false, come illustrato nell'esempio seguente.
<?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>

Si noti che per acconsentire esplicitamente alle funzionalità di accessibilità aggiunte in .NET Framework 4.8, è anche necessario acconsentire esplicitamente alle funzionalità di accessibilità di .NET Framework 4.7.1 e 4.7.2. Le applicazioni destinate al .NET Framework 4.8 e che vogliono mantenere il comportamento di accessibilità legacy possono acconsentire all'uso delle funzionalità di accessibilità legacy impostando l'opzione AppContext su true. Per abilitare il supporto per l'invocazione della descrizione comando con la tastiera, è necessario aggiungere la riga Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false al valore AppContextSwitchOverrides:

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

Si noti che per abilitare questa funzionalità è necessario acconsentire esplicitamente alle funzionalità di accessibilità indicate in precedenza di .NET Framework 4.7.1 - 4.8. Inoltre, se una delle funzionalità di accessibilità non è stata selezionata ma la funzionalità di visualizzazione della descrizione comando è stata selezionata, verrà generato un errore NotSupportedException di runtime al primo accesso a queste funzionalità. Il messaggio di eccezione indica che le descrizioni comandi della tastiera richiedono che i miglioramenti di accessibilità di livello 3 siano abilitati.

Uso dei colori definiti dal sistema operativo nei temi a contrasto elevato

  • Temi a contrasto elevato migliorati.

Migliorato supporto per Narrator

Supporto migliorato per l'accessibilità di CheckedListBox

  • Miglioramento del supporto dell'Assistente vocale per il controllo CheckedListBox. Quando si passa al controllo CheckedListBox usando la tastiera, l'Assistente vocale si concentra sull'elemento CheckedListBox e lo annuncia.
  • Un controllo CheckedListBox vuoto dispone ora di un rettangolo di stato attivo disegnato per un primo elemento virtuale quando il controllo diventa attivo.

Miglioramento del supporto all'accessibilità di ComboBox

  • Abilitato il supporto di automazione UI per il controllo ComboBox, con la possibilità di usare le notifiche di automazione UI e altre funzionalità di automazione UI. Supporto migliorato per l'accessibilità di DataGridView

  • Supporto all'automazione dell'interfaccia utente abilitato per il controllo DataGridView, con la possibilità di usare le notifiche e altre funzionalità di automazione dell'interfaccia utente.

  • L'elemento di automazione dell'interfaccia utente che corrisponde al DataGridViewComboBoxEditingControl o al DataGridViewTextBoxEditingControl è ora un elemento figlio della cella di modifica corrispondente.

Supporto Migliorato per l'Accessibilità LinkLabel

  • Miglioramento dell'accessibilità del controllo LinkLabel: il Narratore annuncia lo stato disabilitato per il collegamento se il controllo LinkLabel corrispondente è disabilitato.

Supporto migliorato per l'accessibilità di ProgressBar

  • Supporto di automazione interfaccia utente abilitato per il controllo ProgressBar con la possibilità di usare le notifiche di automazione interfaccia utente e altre funzionalità di automazione interfaccia utente. Gli sviluppatori possono ora utilizzare le notifiche di automazione dell'interfaccia utente che Narrator può annunciare per indicare lo stato di avanzamento. Per una panoramica degli eventi di automazione dell'interfaccia utente, compresi gli eventi di notifica, vedere Panoramica degli eventi di automazione dell'interfaccia utente.

Supporto migliorato per l'accessibilità di PropertyGrid

  • Supporto all'automazione dell'interfaccia utente abilitato per il controllo PropertyGrid, con la possibilità di utilizzare le notifiche di automazione dell'interfaccia utente e altre funzionalità di automazione.
  • L'elemento di automazione dell'interfaccia utente che corrisponde alla proprietà attualmente modificata è ora un elemento figlio dell'elemento di automazione dell'interfaccia utente relativo alla proprietà corrispondente.
  • L'elemento della proprietà Automazione Interfaccia Utente è ora un elemento figlio dell'elemento categoria corrispondente se il controllo padre PropertyGrid è impostato sulla vista categoria.

Supporto migliorato ToolStrip

  • Supporto di automazione interfaccia utente abilitato per il controllo ToolStrip, con la possibilità di usare le notifiche di automazione interfaccia utente e altre funzionalità di automazione interfaccia utente.
  • Navigazione migliorata tra gli elementi ToolStrip.
  • In modalità elementi, lo stato attivo dell'Assistente vocale non scompare e non passa agli elementi nascosti.

Segnali visivi migliorati

  • Un controllo CheckedListBox vuoto ora visualizza un indicatore di focus quando riceve il focus. Nota: il supporto dell'automazione interfaccia utente è abilitato per i controlli in fase di esecuzione, ma non viene usato in fase di progettazione. Per una panoramica dell'automazione interfaccia utente, vedere Panoramica automazione interfaccia utente.

Richiamare le descrizioni comando dei controlli tramite tastiera

  • Il tooltip del controllo può ora essere richiamato focalizzando il controllo con la tastiera. Questa funzionalità deve essere abilitata in modo esplicito per l'applicazione (vedere la sezione "Come acconsentire esplicitamente o rifiutare queste modifiche")
Nome Valore
Scopo Maggiore
Versione 4.8
Digitare Reindirizzamento

Windows Presentation Foundation (WPF)

Miglioramenti dell'accessibilità in WPF

Dettagli

miglioramenti al contrasto elevato

  • Il focus per il controllo Expander è ora visibile. Nelle versioni precedenti di .NET Framework, non era.
  • Il testo nei controlli CheckBox e RadioButton, quando sono selezionati, è ora più facile da vedere rispetto alle versioni precedenti di .NET Framework.
  • Il bordo di un ComboBox disabilitato è ora lo stesso colore del testo disabilitato. Nelle versioni precedenti di .NET Framework, non era.
  • I pulsanti disabilitati e attivati ora usano il colore del tema corretto. Nelle versioni precedenti di .NET Framework, non lo erano.
  • Il pulsante a discesa ora è visibile quando lo stile di un controllo ComboBox è impostato su ToolBar.ComboBoxStyleKey. Nelle versioni precedenti di .NET Framework, non era.
  • La freccia dell'indicatore di ordinamento in un controllo DataGrid ora usa i colori del tema. Nelle versioni precedenti di .NET Framework, non era disponibile.
  • Lo stile del collegamento ipertestuale predefinito ora passa al colore del tema corretto al passaggio del mouse. Nelle versioni precedenti del .NET Framework, questo non avveniva.
  • Lo stato attivo della tastiera sui pulsanti di opzione è ora visibile. Nelle versioni precedenti di .NET Framework, non era.
  • La colonna della casella di controllo del controllo DataGrid ora utilizza i colori attesi per il feedback del focus della tastiera. Nelle versioni precedenti di .NET Framework non lo faceva.
  • Gli indicatori visivi dello stato attivo della tastiera sono ora visibili sul controllo ComboBox e ListBox. Nelle versioni precedenti di .NET Framework, non era.

miglioramenti dell'interazione con il lettore di schermo

  • Expander i controlli vengono ora annunciati correttamente come gruppi (espandi/comprimi) dagli screen reader.
  • DataGridCell controlli vengono annunciati correttamente come cella della griglia di dati (localizzata) dalle utilità per la lettura dello schermo.
  • I lettori di schermo annunceranno ora il nome di un ComboBoxmodificabile.
  • PasswordBox controlli non vengono più annunciati come "nessun elemento visibile" dai lettori di schermo.

Supporto per LiveRegion

Le utilità per la lettura dello schermo, ad esempio Assistente vocale, aiutano gli utenti a comprendere l'interfaccia utente di un'applicazione, in genere descrivendo l'elemento dell'interfaccia utente attualmente attivo. Tuttavia, se un elemento dell'interfaccia utente cambia da qualche parte nella schermata e non ha lo stato attivo, l'utente potrebbe non essere informato e perdere informazioni importanti. LiveRegions sono concepite per risolvere questo problema. Uno sviluppatore può usarli per informare l'utilità per la lettura dello schermo o qualsiasi altro client di automazione interfaccia utente che è stata apportata una modifica importante a un elemento dell'interfaccia utente. L'utilità per la lettura dello schermo può quindi decidere come e quando informare l'utente di questa modifica. La proprietà LiveSetting consente anche all'utilità per la lettura dello schermo di sapere quanto sia importante informare l'utente della modifica apportata all'interfaccia utente.

Suggerimento

Come acconsentire esplicitamente o rifiutare queste modifiche

Affinché l'applicazione possa trarre vantaggio da queste modifiche, deve essere eseguita in .NET Framework 4.7.1 o versione successiva. L'applicazione può trarre vantaggio da queste modifiche in uno dei modi seguenti:

  • Destinazione .NET Framework 4.7.1. Questo è l'approccio consigliato. Queste modifiche all'accessibilità sono abilitate per impostazione predefinita nelle applicazioni WPF destinate a .NET Framework 4.7.1 o versioni successive.

  • Rifiuta esplicitamente i comportamenti di accessibilità legacy aggiungendo il seguente AppContext Switch nella sezione <runtime> del file di configurazione dell'app e impostandolo su false, come illustrato nell'esempio seguente.

    <?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>
    

Le applicazioni destinate a .NET Framework 4.7.1 o versioni successive e vogliono mantenere il comportamento di accessibilità legacy possono acconsentire esplicitamente all'uso delle funzionalità di accessibilità legacy impostando in modo esplicito l'opzione AppContext su true. Per una panoramica dell'automazione dell'interfaccia utente, vedi Panoramica dell'automazione dell'interfaccia utente.

Nome Valore
Ambito Maggiore
Versione 4.7.1
Digitare Reindirizzamento

API interessate

Aggiungere la proprietà pubblica SelectionTextBrush alla selezione non adorner di TextBox/PasswordBox

Dettagli

Nelle applicazioni WPF che usano selezione di testo non basata su adorner per TextBox e PasswordBox, gli sviluppatori possono ora impostare la proprietà SelectionTextBrush appena aggiunta per modificare il rendering del testo selezionato. Per impostazione predefinita, questo colore cambia con HighlightTextBrushKey. Se la selezione di testo non basata su adorner non è abilitata, questa proprietà non esegue alcuna operazione.

Suggerimento

Dopo aver abilitato la selezione di testo non basata su adorner, è possibile utilizzare la proprietà PasswordBox.SelectionTextBrush e SelectionTextBrush per modificare l'aspetto del testo selezionato. A questo scopo, è possibile usare XAML:

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
Nome Valore
Ambito Maggiore
Versione 4.8
Digitare Reindirizzamento

API interessate

HwndHost ora ridimensiona correttamente il child-HWND durante le modifiche DPI

Dettagli

In .NET Framework 4.7.2 e versioni precedenti, quando WPF veniva eseguito in modalità Per-Monitor Aware, i controlli ospitati all'interno di HwndHost non venivano dimensionati correttamente dopo le modifiche del DPI, ad esempio quando si spostavano applicazioni da un monitor a un altro. Questa correzione assicura che i controlli ospitati abbiano dimensioni appropriate.

Suggerimento

Affinché l'applicazione possa trarre vantaggio da queste modifiche, deve essere eseguita in .NET Framework 4.7.2 o versione successiva e deve acconsentire esplicitamente a questo comportamento impostando il seguente AppContext Switch nella sezione <runtime> del file di configurazione dell'app su false, come illustrato nell'esempio seguente.

<?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>
Nome Valore
Ambito Maggiore
Versione 4.8
Digitare Reindirizzamento

Windows Workflow Foundation (WF)

Miglioramenti dell'accessibilità nella finestra di progettazione del flusso di lavoro di Windows Workflow Foundation (WF)

Dettagli

La progettazione dei flussi di lavoro di Windows Workflow Foundation (WF) sta migliorando l'interazione con le tecnologie di accessibilità. Questi miglioramenti includono le modifiche seguenti:

  • L'ordine di tabulazioni viene modificato da sinistra a destra e dall'alto verso il basso in alcuni controlli:
  • Finestra di inizializzazione della correlazione per l'impostazione dei dati di correlazione per l'attività di InitializeCorrelation
  • Finestra di definizione del contenuto per le attività di Receive, Send, SendReplye ReceiveReply
  • Sono disponibili altre funzioni tramite la tastiera:
  • Quando si modificano le proprietà di un'attività, i gruppi di proprietà possono essere compressi usando la tastiera la prima volta che vengono messi a fuoco.
  • Le icone di avviso sono ora accessibili tramite tastiera.
  • Il pulsante Altre proprietà nella finestra Proprietà è ora accessibile tramite tastiera.
  • Gli utenti della tastiera possono ora accedere agli elementi di intestazione nei riquadri Argomenti e variabili di Progettazione flussi di lavoro.
  • Maggiore visibilità degli elementi con focus, ad esempio quando:
  • Aggiunta di righe alle griglie di dati utilizzate dal Progettista di flussi di lavoro e dai progettisti di attività.
  • Tabulazione dei campi nelle attività di ReceiveReply e SendReply.
  • Impostazione dei valori predefiniti per variabili o argomenti
  • I screen reader ora possono riconoscere correttamente:
  • Punti di interruzione impostati nella finestra di progettazione del flusso di lavoro.
  • Attività di FlowSwitch<T>, FlowDecisione CorrelationScope.
  • Contenuto dell'attività Receive.
  • Tipo di destinazione per l'attività InvokeMethod.
  • Casella combinata Eccezione e sezione Finally nell'attività TryCatch.
  • Combinazione Tipo di messaggio, il separatore nella finestra Aggiungi inizializzatori di correlazione, la finestra Definizione contenuto e la finestra Definizione CorrelatesOn nelle attività di messaggistica: (Receive, Send, SendReplye ReceiveReply).
  • Le transizioni della macchina a stati e le loro destinazioni.
  • Annotazioni e connettori sulle attività di FlowDecision.
  • Menu di scelta rapida (clic con il pulsante destro del mouse) per le attività.
  • Editor dei valori della proprietà, il pulsante Cancella ricerca, i pulsanti Per categoria e ordinamento alfabetico e la finestra di dialogo Editor espressioni nella griglia delle proprietà.
  • Percentuale di zoom nella Progettazione dei flussi di lavoro.
  • Il separatore nelle attività di Parallel e Pick.
  • Attività InvokeDelegate.
  • La finestra Seleziona tipi per le attività del dizionario (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue>e così via).
  • Finestra "Sfoglia e Seleziona Tipo .NET".
  • Breadcrumbs nel Workflow Designer.
  • Gli utenti che scelgono temi a contrasto elevato noteranno molti miglioramenti nella visibilità della Progettazione flussi di lavoro e dei relativi controlli, come rapporti di contrasto migliori tra gli elementi e caselle di selezione più evidenti per gli elementi focalizzati.

Suggerimento

Se si dispone di un'applicazione con un progettista di flussi di lavoro riospitato, l'applicazione può trarre vantaggio da queste modifiche eseguendo una delle seguenti azioni:

  • Ricompilare l'applicazione in modo che sia destinato a .NET Framework 4.7.1. Queste modifiche all'accessibilità sono abilitate per impostazione predefinita.
  • Se l'applicazione è rivolta a .NET Framework 4.7 o versioni precedenti, ma è in esecuzione in .NET Framework 4.7.1, è possibile optare per disattivare questi comportamenti di accessibilità legacy aggiungendo il seguente switch AppContext alla sezione <runtime> del file app.config e impostandolo su false, come mostra l'esempio seguente.
<?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>

Le applicazioni destinate a .NET Framework 4.7.1 o versioni successive e vogliono mantenere il comportamento di accessibilità legacy possono acconsentire esplicitamente all'uso delle funzionalità di accessibilità legacy impostando in modo esplicito questa opzione AppContext su true.

Nome Valore
Ambito Minore
Versione 4.7.1
Digitare Reindirizzamento

Checksum XAML del flusso di lavoro per i simboli modificati da SHA1 a SHA256

Dettagli

Per supportare il debug con Visual Studio, il runtime del flusso di lavoro genera un checksum per un file XAML del flusso di lavoro usando un algoritmo hash. In .NET Framework 4.6.2 e versioni precedenti, l'hashing del checksum del workflow usava l'algoritmo MD5, che causava problemi nei sistemi con FIPS abilitato. A partire da .NET Framework 4.7, l'algoritmo predefinito è stato modificato in SHA1. A partire da .NET Framework 4.8, l'algoritmo predefinito è stato modificato in SHA256.

Suggerimento

Se il codice non è in grado di caricare istanze del flusso di lavoro o di trovare simboli appropriati a causa di un errore di checksum, provare a impostare l'opzione AppContext "Switch.System.Activities.UseSHA1HashForDebuggerSymbols" su true. Nel codice:

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

Oppure, nella configurazione:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
  </runtime>
</configuration>
Nome Valore
Ambito Minore
Versione 4.8
Tipo Reindirizzamento

Definizione XOML del flusso di lavoro e chiavi della cache SqlTrackingService modificate da MD5 a SHA256

Dettagli

Il runtime del flusso di lavoro mantiene una cache delle definizioni del flusso di lavoro definite in XOML. SqlTrackingService mantiene anche una cache indicizzata da stringhe. Queste cache vengono indicizzate in base ai valori che includono il valore hash del checksum. In .NET Framework 4.7.2 e versioni precedenti, questo hash checksum usava l'algoritmo MD5, che causava problemi nei sistemi abilitati per FIPS. A partire da .NET Framework 4.8, l'algoritmo usato è SHA256. Non dovrebbe esserci un problema di compatibilità con questa modifica perché i valori vengono ricalcolati ogni volta che viene avviato il runtime del flusso di lavoro e SqlTrackingService. Tuttavia, sono state fornite soluzioni alternative per consentire ai clienti di ripristinare l'utilizzo dell'algoritmo di hashing legacy, se necessario.

Suggerimento

Se questa modifica presenta un problema durante l'esecuzione dei flussi di lavoro, provare a impostare una o entrambe le opzioni di AppContext:

  • "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" su true.
  • "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey" impostare a true. Nel codice:
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);

Oppure nel file di configurazione (deve trovarsi nel file di configurazione per l'applicazione che sta creando l'oggetto WorkflowRuntime):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
Nome Valore
Ambito Minore
Versione 4.8
Digitare Reindirizzamento

I checksum dei file XOML del flusso di lavoro sono stati modificati da MD5 a SHA256

Dettagli

Per supportare il debug di flussi di lavoro basati su XOML con Visual Studio, quando si compilano progetti di flusso di lavoro contenenti file XOML, viene incluso un checksum del contenuto del file XOML nel codice generato come valore WorkflowMarkupSourceAttribute.MD5Digest. Nelle versioni 4.7.2 e precedenti di .NET Framework, questo hash utilizzava l'algoritmo MD5, causando problemi nei sistemi abilitati per FIPS. A partire da .NET Framework 4.8, l'algoritmo usato è SHA256. Per essere compatibile con WorkflowMarkupSourceAttribute.MD5Digest, vengono usati solo i primi 16 byte del checksum generato. Ciò può causare problemi durante il debug. Potrebbe essere necessario ricostruire il tuo progetto.

Suggerimento

Se la ricreazione del progetto non risolve il problema, provare a impostare l'opzione di AppContext "Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum" su true. Nel codice:

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

In alternativa, in un file di configurazione (deve trovarsi in MSBuild.exe.config per l'MSBuild.exe in uso):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Nome Valore
Ambito Minore
Versione 4.8
Digitare Reindirizzamento

.NET Framework 4.8.1

Non sono stati introdotti problemi di compatibilità delle app in .NET Framework 4.8.1.