Condividi tramite


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

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

.NET Framework 4.8

Memoria centrale

Le classi di crittografia gestite non generano un'eccezione CryptographyException in modalità FIPS

Dettagli

In .NET Framework 4.7.2 e versioni precedenti le classi del provider del servizio di crittografia gestite, ad esempio SHA256Managed, generano un'eccezione CryptographicException quando le librerie di crittografia del 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 di crittografia che non sono stati approvati in base alle regole FIPS. Poiché sono pochi gli sviluppatori che 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 ai nuovi criteri, meno stretti, quindi in questi casi non viene più generata un'eccezione CryptographicException per impostazione predefinita. Al contrario, le classi di crittografia gestite reindirizzano le operazioni di crittografia a una libreria di crittografia del sistema. Questa modifica dei criteri rimuove in modo efficiente una differenza potenzialmente fuorviante tra ambienti di sviluppo e ambienti di produzione e rende possibile eseguire i componenti nativi e i componenti gestiti in base agli stessi criteri di crittografia.

Suggerimento

Se questo comportamento è indesiderato, è possibile rifiutarlo esplicitamente e ripristinare il comportamento precedente in modo che venga generata un'eccezione CryptographicException in modalità FIPS aggiungendo l'impostazione di configurazione AppContextSwitchOverrides seguente alla sezione <runtime> del file di configurazione dell'applicazione:

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

Se l'applicazione è destinata a .NET Framework 4.7.2 o versioni precedenti, è possibile acconsentire esplicitamente a questa modifica aggiungendo l'impostazione di configurazione AppContextSwitchOverrides seguente alla sezione <runtime> del file di configurazione dell'applicazione:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Nome valore
Scope Edge
Versione 4.8
Type Ridestinazione

API interessate

WinForms

Miglioramenti di accessibilità nei controlli Windows Forms per .NET 4.8

Dettagli

Il funzionamento del framework di Windows Forms è in continuo miglioramento grazie alle tecnologie di accessibilità al servizio dei clienti di Windows Forms. Sono incluse le modifiche seguenti:

  • Modifiche per migliorare la visualizzazione durante la modalità a contrasto elevato.
  • Modifiche all'interazione con l'Assistente vocale.
  • Modifiche alla gerarchia accessibile grazie al miglioramento della navigazione attraverso l'albero di automazione interfaccia utente.

Suggerimento

Come acconsentire o rifiutare esplicitamente queste modifiche Affinché l'applicazione possa usufruire di queste modifiche, è necessario che sia eseguita in .NET Framework 4.8. L'applicazione può acconsentire esplicitamente a queste modifiche in uno dei modi seguenti:

  • Viene ricompilata per usare .NET Framework 4.8. Queste modifiche di accessibilità sono abilitate per impostazione predefinita nelle applicazioni Windows Forms destinate a .NET Framework 4.8.
  • È destinata a .NET Framework 4.7.2 o versione precedente e rifiuta esplicitamente i comportamenti di accessibilità legacy aggiungendo l'opzione di AppContext seguente 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 a .NET Framework 4.8 che vogliono mantenere il comportamento di accessibilità legacy possono acconsentire esplicitamente all'uso delle funzionalità di accessibilità legacy impostando in modo esplicito questa opzione di AppContext su true.Per abilitare il supporto della chiamata di ToolTip da tastiera è necessario aggiungere una riga Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false al valore di AppContextSwitchOverrides:

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

Si noti che l'abilitazione di questa funzionalità richiede di acconsentire esplicitamente alle funzionalità di accessibilità di .NET Framework 4.7.1 - 4.8 menzionate in precedenza. Tenere presente anche che, se non si è acconsentito esplicitamente alle funzionalità di accessibilità ma l'opzione di visualizzazione delle descrizioni dei comandi è abilitata, verrà generata un'eccezione di runtime NotSupportedException al primo accesso a queste funzionalità. Il messaggio dell'eccezione indica che le descrizioni dei comandi da tastiera necessitano l'abilitazione dei miglioramenti di accessibilità di livello 3.

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

  • Temi a contrasto elevato migliorati.

Supporto migliorato di Assistente vocale

Supporto dell'accessibilità al controllo CheckedListBox migliorato

  • Supporto dell'assistente vocale per il controllo CheckedListBox migliorato. Quando si passa al controllo CheckedListBox usando la tastiera, l'assistente vocale evidenzia l'elemento CheckedListBox e lo annuncia.
  • Il controllo CheckedListBox vuoto ora ha un rettangolo di attivazione disegnato per il primo elemento virtuale quando il controllo viene evidenziato.

Supporto dell'accessibilità al controllo ComboBox migliorato

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

  • Abilitato il supporto di automazione interfaccia utente per il controllo DataGridView, con la possibilità di usare le notifiche e altre funzionalità di automazione interfaccia utente.

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

Supporto dell'accessibilità al controllo LinkLabel migliorato

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

Supporto dell'accessibilità al controllo Improved ProgressBar migliorato

  • Abilitato il supporto di automazione interfaccia utente per il controllo ProgressBar, con la possibilità di usare le notifiche e altre funzionalità di automazione interfaccia utente. Gli sviluppatori possono ora usare le notifiche di automazione interfaccia utente che l'assistente vocale può annunciare per indicare lo stato di avanzamento. Per una panoramica degli eventi di automazione interfaccia utente, inclusi gli eventi di notifica, vedere la Panoramica degli eventi automazione interfaccia utente.

Supporto dell'accessibilità al controllo PropertyGrid migliorato

  • Abilitato il supporto di automazione interfaccia utente per il controllo PropertyGrid, con la possibilità di usare le notifiche e altre funzionalità di automazione interfaccia utente.
  • L'elemento di automazione interfaccia utente che corrisponde alla proprietà attualmente modificata è ora un elemento figlio dell'elemento di automazione interfaccia utente dell'elemento della proprietà corrispondente.
  • L'elemento della proprietà di automazione interfaccia utente è ora un elemento figlio dell'elemento della categoria corrispondente, se il controllo padre PropertyGrid è impostato sulla visualizzazione per categorie.

Supporto per il controllo ToolStrip migliorato

  • Abilitato il supporto di automazione interfaccia utente per il controllo ToolStrip, con la possibilità di usare le notifiche e altre funzionalità di automazione interfaccia utente.
  • Navigazione negli elementi ToolStrip migliorata.
  • Nella modalità elementi l'evidenziazione dell'assistente vocale non scompare e non viene applicata agli elementi nascosti.

Segnali visivi migliorati

  • Un controllo CheckedListBox vuoto ora visualizza un indicatore quando viene evidenziato. Nota: il supporto di automazione interfaccia utente viene 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 di automazione interfaccia utente.

Richiamo delle descrizioni comando dei controlli con la tastiera

  • Le descrizioni comando dei controlli ora possono essere richiamate evidenziando il controllo con la tastiera. Questa funzionalità deve essere abilitata esplicitamente per l'applicazione (vedere la sezione “Come accettare o rifiutare esplicitamente queste modifiche”)
Nome valore
Scope Major
Versione 4.8
Type Ridestinazione

Windows Presentation Foundation (WPF)

Miglioramenti di accessibilità in WPF

Dettagli

Miglioramenti del contrasto elevato

  • Lo stato attivo per il controllo Expander ora è visibile. Nelle versioni precedenti di .NET Framework, non accadeva così.
  • Il testo nei controlli CheckBox e RadioButton selezionati ora è visualizzabile più semplicemente rispetto alle versioni precedenti di .NET Framework.
  • Il bordo di un oggetto ComboBox disabilitato ora è dello stesso colore del testo disabilitato. Nelle versioni precedenti di .NET Framework, non accadeva così.
  • I pulsanti con lo stato attivo e disabilitati ora usano il colore del tema corretto. Nelle versioni precedenti di .NET Framework, non lo usavano.
  • Il pulsante del menu a discesa è ora visibile quando lo stile di un controllo ComboBox è impostato su ToolBar.ComboBoxStyleKey. Nelle versioni precedenti di .NET Framework, non accadeva così.
  • Freccia dell'indicatore di ordinamento in un controllo DataGrid ora usa i colori del tema. Nelle versioni precedenti di .NET Framework, non accadeva così.
  • Lo stile del collegamento ipertestuale predefinito ora diventa il colore del tema corretto al passaggio del mouse. Nelle versioni precedenti di .NET Framework, non accadeva così.
  • Lo stato attivo della tastiera nei pulsanti di opzione ora è visibile. Nelle versioni precedenti di .NET Framework, non accadeva così.
  • La colonna della casella di controllo del controllo DataGrid ora usa i colori previsti per il riscontro dello stato attivo della tastiera. Nelle versioni precedenti di .NET Framework, non accadeva così.
  • Gli oggetti visivi dello stato attivo della tastiera ora sono visibili nei controlli ComboBox e ListBox. Nelle versioni precedenti di .NET Framework, non accadeva così.

Miglioramenti di interazione nell'utilità per la lettura dello schermo

  • I controlli Expander ora sono correttamente annunciati come gruppi (di espansione/compresione) dalle utilità per la lettura dello schermo.
  • I controlli DataGridCell ora sono correttamente annunciati come cella della griglia dati (localizzata) dalle utilità per la lettura dello schermo.
  • Le utilità per la lettura dello schermo ora annunciano il nome di un oggetto ComboBox modificabile.
  • I controlli PasswordBox non sono più annunciati come “nessun elemento visualizzato” dalle utilità per la lettura dello schermo.

Supporto per aree dinamiche

Le utilità per la lettura dello schermo, ad esempio Assistente vocale, aiutano gli utenti a comprendere l'interfaccia utente (UI) di un'applicazione, in genere descrivendo l'elemento dell'interfaccia utente attualmente attivo. Se tuttavia un elemento qualsiasi dell'interfaccia utente viene modificato sullo schermo e non ha lo stato attivo, l'utente potrebbe non riceverne notifica e perdere informazioni importanti. Le aree dinamiche servono a risolvere questo problema. Uno sviluppatore può usarle per informare l'utilità per la lettura dello schermo o qualsiasi altro client UIAutomation di un'importante modifica apportata 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 se è importante informare l'utente della modifica apportata all'interfaccia utente.

Suggerimento

Come accettare o rifiutare esplicitamente queste modifiche

Perché l'applicazione possa usufruire di queste modifiche, è necessario che sia eseguita in .NET Framework 4.7.1 o versione successiva. L'applicazione può trarre vantaggio da queste modifiche in uno dei modi seguenti:

  • .NET Framework 4.7.1 di destinazione. Questo è l'approccio consigliato. Queste modifiche di accessibilità sono abilitate per impostazione predefinita nelle applicazioni WPF che usano .NET Framework 4.7.1 o versione successiva.

  • I comportamenti di accessibilità legacy vengono rifiutati esplicitamente aggiungendo l'opzione di AppContext seguente alla sezione <runtime> del file app.config 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" />
      </runtime>
    </configuration>
    

Le applicazioni che usano .NET Framework 4.7.1 o versione successiva e che vogliono mantenere il comportamento di accessibilità legacy possono scegliere di usare le funzionalità di accessibilità legacy impostando in modo esplicito questa opzione di AppContext su true. Per una panoramica dell'automazione interfaccia utente, vedere Panoramica di automazione interfaccia utente.

Nome valore
Scope Major
Versione 4.7.1
Type Ridestinazione

API interessate

Aggiungere la proprietà pubblica SelectionTextBrush alla selezione non basata su Adorner TextBox/PasswordBox

Dettagli

Nelle applicazioni WPF l'uso della selezione testo non basata su Adorner per TextBox e PasswordBox consente ora agli sviluppatori di impostare la nuova proprietà SelectionTextBrush per modificare il rendering del testo selezionato. Per impostazione predefinita, questo colore viene modificato con HighlightTextBrushKey. Se la selezione testo non basata su Adorner non è abilitata, questa proprietà non produce alcun effetto.

Suggerimento

Dopo che la selezione testo non basata su Adorner è stata abilitata, è possibile usare le proprietà PasswordBox.SelectionTextBrush e SelectionTextBrush per modificare l'aspetto del testo selezionato. A tale scopo, usare XAML:

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
Nome valore
Scope Major
Versione 4.8
Type Ridestinazione

API interessate

HwndHost ora ridimensiona correttamente l'elemento HWND figlio durante le modifiche DPI

Dettagli

In .NET Framework 4.7.2 e versioni precedenti, quando WPF viene eseguito in modalità sensibile ai valori DPI del monitor, i controlli ospitati all'interno di HwndHost non vengono ridimensionati correttamente dopo le modifiche DPI, ad esempio quando si passano le applicazioni da un monitor a un altro. Questa correzione garantisce il corretto ridimensionamento dei controlli ospitati.

Suggerimento

Perché l'applicazione possa usufruire di queste modifiche, è necessario che sia eseguita in .NET Framework 4.7.2 o versione successiva e che acconsenta esplicitamente a questo comportamento impostando l'opzione di AppContext seguente nella sezione <runtime> del file di configurazione dell'app su false, come illustrato nell'esempio riportato di seguito.

<?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
Scope Major
Versione 4.8
Type Ridestinazione

Windows Workflow Foundation (WF)

Miglioramenti di accessibilità in Progettazione flussi di lavoro di Windows Workflow Foundation (WF)

Dettagli

Progettazione flussi di lavoro di Windows Workflow Foundation (WF) è stata migliorata per poter usare tecnologie di accessibilità. Questi miglioramenti includono le modifiche seguenti:

  • L'ordine di tabulazione viene modificato da sinistra a destra e dall'alto verso il basso in alcuni controlli:
  • Finestra di inizializzazione della correlazione in cui impostare i dati di correlazione per l'attività InitializeCorrelation
  • Finestra di definizione del contenuto per le attività Receive, Send, SendReply e ReceiveReply
  • Altre funzioni sono disponibili tramite tastiera:
  • Quando vengono modificate le proprietà di un'attività, i gruppi delle proprietà possono essere compressi tramite tastiera la prima volta che hanno lo stato attivo.
  • Le icone di avviso ora sono accessibili dalla tastiera.
  • Il pulsante Altre proprietà nella finestra Proprietà è ora accessibile dalla tastiera.
  • Tramite tastiera gli utenti ora possono accedere agli elementi dell'intestazione nei riquadri Argomenti e Variabili in Progettazione flussi di lavoro.
  • Maggiore visibilità degli elementi con stato attivo, ad esempio quando:
  • Aggiunta di righe alle griglie di dati usate in Progettazione flussi di lavoro e in ActivityDesigner.
  • Tabulazione all'interno dei campi nelle attività ReceiveReply e SendReply.
  • Impostazione di valori predefiniti per variabili o argomenti
  • Le utilità per la lettura dello schermo ora possono riconoscere correttamente:
  • Set di punti di interruzione in Progettazione flussi di lavoro.
  • Attività FlowSwitch<T>, FlowDecision e CorrelationScope.
  • Contenuto dell'attività Receive.
  • Tipo di destinazione per l'attività InvokeMethod.
  • Casella combinata Eccezione e sezione Finally nell'attività TryCatch.
  • Casella combinata Tipo di messaggio, barra di divisione nella finestra Aggiungi inizializzatori di correlazione, finestra Content Definition (Definizione contenuto) e finestra Definizione di CorrelatesOn nelle attività di messaggistica (Receive, Send, SendReply e ReceiveReply).
  • Transizioni della macchina a uno stato e destinazioni delle transazioni.
  • Annotazioni e connettori nelle attività FlowDecision.
  • Menu di scelta rapida per le attività.
  • Editor di valori di proprietà, pulsante Cancella ricerca, pulsanti di ordinamento Per categoria e In ordine alfabetico e finestra di dialogo Editor espressioni nella griglia delle proprietà.
  • Percentuale di zoom in Progettazione flussi di lavoro.
  • Separatore nelle attività Parallel e Pick.
  • Attività InvokeDelegate.
  • Finestra Seleziona tipi per le attività di dizionario (Microsoft.Activities.AddToDictionary<TKey,TValue>, Microsoft.Activities.RemoveFromDictionary<TKey,TValue> e così via).
  • Finestra Cerca e seleziona un tipo .NET.
  • Navigazioni in Progettazione flussi di lavoro.
  • Gli utenti che usano i temi a contrasto elevato noteranno molti miglioramenti nella visibilità di Progettazione flussi di lavoro e nei relativi controlli, ad esempio rapporti di contrasto più definiti tra gli elementi e caselle di riepilogo più evidenti per gli elementi con lo stato attivo.

Suggerimento

Se Progettazione flussi di lavoro è stata riallocata nell'applicazione, l'applicazione può usufruire dei vantaggi offerti da queste modifiche eseguendo una delle azioni seguenti:

  • Ricompilare l'applicazione per usare .NET Framework 4.7.1. Queste modifiche di accessibilità sono abilitate per impostazione predefinita.
  • Se l'applicazione usa .NET Framework 4.7 o versione precedente, ma viene eseguita in .NET Framework 4.7.1, è possibile rifiutare questi comportamenti di accessibilità legacy aggiungendo l'opzione di AppContext seguente alla sezione <runtime> del file app.config 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" />
  </runtime>
</configuration>

Le applicazioni che usano .NET Framework 4.7.1 o versione successiva e che vogliono mantenere il comportamento di accessibilità legacy possono scegliere di usare le funzionalità di accessibilità legacy impostando in modo esplicito questa opzione di AppContext su true.

Nome valore
Scope Secondarie
Versione 4.7.1
Type Ridestinazione

Checksum di Workflow XAML per i simboli modificati da SHA1 in SHA256

Dettagli

Per supportare il debug con Visual Studio, il runtime di Workflow genera un checksum per un file Workflow XAML usando un algoritmo hash. In .NET Framework 4.6.2 e versioni precedenti, l'hash del checksum del flusso di lavoro usava l'algoritmo MD5, che causava problemi nei sistemi abilitati per FIPS. 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 riesce a caricare le istanze del flusso di lavoro o a trovare i 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);

O nella configurazione:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
  </runtime>
</configuration>
Nome valore
Scope Secondarie
Versione 4.8
Type Ridestinazione

La definizione XOML del flusso di lavoro e le chiavi della cache di SqlTrackingService sono state modificate da MD5 a SHA256

Dettagli

Nel runtime di Workflow viene archiviata una cache di definizioni del flusso di lavoro definite in XOML. Anche in SqlTrackingService viene archiviata una cache con chiavi specificate da stringhe. Queste cache vengono codificate con chiavi in base ai valori che includono un valore hash di checksum. In .NET Framework 4.7.2 e versioni precedenti l'hash del 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 dovrebbero esserci problemi di compatibilità con questa modifica poiché i valori vengono ricalcolati ogni volta che vengono avviati il runtime di Workflow e SqlTrackingService. Tuttavia, sono state specificate modalità non standard per consentire ai clienti di ripristinare l'uso dell'algoritmo hash legacy, in caso di necessità.

Suggerimento

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

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

O nel file di configurazione (deve essere il file di configurazione per l'applicazione con cui si 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
Scope Secondarie
Versione 4.8
Type Ridestinazione

Checksum del file XOML del flusso di lavoro modificati da MD5 a SHA256

Dettagli

Per supportare il debug dei flussi di lavoro basati su XOML con Visual Studio, quando vengono compilati progetti di flusso di lavoro contenenti file XOML, viene inserito nel codice generato un checksum del contenuto del file XOML come valore WorkflowMarkupSourceAttribute.MD5Digest. In .NET Framework 4.7.2 e versioni precedenti l'hash del checksum usava l'algoritmo MD5 che causava problemi nei sistemi abilitati per FIPS. A partire da .NET Framework 4.8, viene usato l'algoritmo SHA256. Per ragioni di compatibilità con WorkflowMarkupSourceAttribute.MD5Digest, vengono usati solo i primi 16 byte del checksum generato. Ciò potrebbe causare problemi durante il debug. Potrebbe essere necessario ricompilare il progetto.

Suggerimento

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

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

Oppure in un file di configurazione (che deve trovarsi in MSBuild.exe.config per il file MSBuild.exe in uso):

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
Nome valore
Scope Secondarie
Versione 4.8
Type Ridestinazione

.NET Framework 4.8.1

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