.NET Framework 4.8.x への移行に関する変更の再ターゲット

この記事では、.NET Framework 4.8 および 4.8.1 で生じたアプリの互換性の問題について説明します。

.NET Framework 4.8

コア

FIPS モードのマネージド暗号クラスで CryptographyException がスローされない

説明

.NET Framework 4.7.2 以前のバージョンでは、システムの暗号化ライブラリが FIPS モードで構成されていると、SHA256Managed などのマネージド暗号化プロバイダー クラスで CryptographicException がスローされます。 これらの例外がスローされるのは、マネージド バージョンが FIPS (Federal Information Processing Standards) 140-2 の認定を受けていないためであり、また、FIPS ルールに基づく承認の対象と見なされなかった暗号アルゴリズムをブロックするためです。 少数の開発者は開発用コンピューターを FIPS モードで利用するため、これらの例外は運用システムでのみ頻繁にスローされます。 .NET Framework 4.8 以降のバージョンをターゲットとするアプリケーションでは、より新しい緩いポリシーに自動的に切り替えられるため、そのような場合、CryptographicException が既定でスローされなくなりました。 代わりに、マネージド暗号化クラスでは、暗号化操作がシステムの暗号化ライブラリにリダイレクトされます。 このポリシー変更により、開発者環境と運用環境での混乱を招く可能性のある違いは実質的になくなり、ネイティブ コンポーネントとマネージド コンポーネントは同じ暗号化ポリシーの下で動作するようになります。

提案される解決策

この動作が望ましくない場合は、それを選択せず、次の AppContextSwitchOverrides 構成設定をアプリケーション構成ファイルの <runtime> セクションに追加することで、以前の動作を復元して CryptographicException が FIPS モードでスローされるようにすることができます。

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

アプリケーションのターゲットが .NET Framework 4.7.2 以前である場合は、次の AppContextSwitchOverrides 構成設定をアプリケーション構成ファイルの <runtime> セクションに追加することで、この変更を選択することもできます。

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
Name
スコープ エッジ
バージョン 4.8
種類 再ターゲット中

影響を受ける API

Windows フォーム

.NET 4.8 の Windows フォーム コントロールでのアクセシビリティの改善

説明

Windows フォーム フレームワークでは引き続き、アクセシビリティ テクノロジでの動作が改善されており、Windows フォームのお客様のサポートが向上しています。 次のような点が変更されます。

  • ハイ コントラスト モード中の表示が向上する変更。
  • ナレーターとのやり取りの変更。
  • アクセス可能な階層の変更 (UI オートメーション ツリー間の移動の改善)。

提案される解決策

これらの変更を選択する方法と選択しない方法 アプリケーションでこれらの変更を利用するには、.NET Framework 4.8 で実行する必要があります。 アプリケーションでは、次のいずれかの方法でこれらの変更を選択できます。

  • .NET Framework 4.8 をターゲットとして再コンパイルします。 .NET Framework 4.8 をターゲットとする Windows フォーム アプリケーションでは、これらのアクセシビリティの変更が既定で有効になります。
  • .NET Framework 4.7.2 以前のバージョンをターゲットとし、下の例のように、アプリ構成ファイルの <runtime> セクションに次の AppContext スイッチを追加し、それを 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;Switch.UseLegacyAccessibilityFeatures.2=false;Switch.UseLegacyAccessibilityFeatures.3=false" />
  </runtime>
</configuration>

.NET Framework 4.8 で追加されたアクセシビリティ機能を選択するには、.NET Framework 4.7.1 と 4.7.2 のアクセシビリティ機能も選択する必要があることに注意してください。 .NET Framework 4.8 をターゲットとするアプリケーションで以前のアクセシビリティ動作を残す場合、この AppContext スイッチを明示的に true に設定することで、以前のアクセシビリティ機能の使用を選択できます。キーボード ツールヒントの呼び出しサポートを有効にするには、Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false 行を AppContextSwitchOverrides 値に追加する必要があります。

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

この機能を有効にするには、.NET Framework 4.7.1 から 4.8 の前述のアクセシビリティ機能を選択する必要があることに注意してください。 また、どのアクセシビリティ機能も選択されていないが、ツールヒントに機能が選択されていることが示される場合は、これらの機能への初回アクセス時に、ランタイムの NotSupportedException がスローされます。 例外メッセージには、キーボードのツールヒントではレベル 3 のアクセシビリティ機能の強化を有効にする必要があることが示されます。

ハイ コントラスト テーマでの OS で定義された色の使用

  • ハイ コントラストのテーマが改善されました。

ナレーター サポートが改善されました

  • ナレーターで、DataGridViewCell のアクセス可能な名前を読み上げるときに、DataGridViewColumn の並べ替えの方向を読み上げるようになりました。

CheckedListBox アクセシビリティ サポートの改善

  • CheckedListBox コントロールのナレーター サポートが改善されました。 キーボードを使用して CheckedListBox コントロールに移動するときに、ナレーターでは CheckedListBox 項目にフォーカスし、それを読み上げます。
  • 空の CheckedListBox コントロールでは、コントロールがフォーカスされたときに、仮想の最初の項目に対してフォーカスを示す四角形が描画されるようになりました。

ComboBox アクセシビリティ サポートの改善

  • UI オートメーション通知やその他の UI オートメーション機能を使用できる、ComboBox コントロールの UI オートメーション サポートが有効になりました。 DataGridView のアクセシビリティ サポートの向上

  • UI オートメーション通知やその他の UI オートメーション機能を使用できる、DataGridView コントロールの UI オートメーション サポートが有効になりました。

  • DataGridViewComboBoxEditingControl または DataGridViewTextBoxEditingControl に対応する UI オートメーション要素が、対応する編集セルの子になりました。

LinkLabel アクセシビリティ サポートの改善

  • LinkLabel コントロールのアクセシビリティが改善されました。対応する LinkLabel コントロールが無効になっている場合、ナレーターではリンクの無効状態が読み上げられます。

ProgressBar アクセシビリティ サポートの改善

  • UI オートメーション通知やその他の UI オートメーション機能を使用できる、ProgressBar コントロールの UI オートメーション サポートが有効になりました。 開発者は、進行状況を示すためにナレーターで読み上げることができる、UI オートメーション通知を使用できるようになりました。 UI オートメーション通知イベントを含む、UI オートメーション イベントの概要については、「UI オートメーション イベントの概要」を参照してください。

PropertyGrid アクセシビリティ サポートの改善

  • UI オートメーション通知やその他の UI オートメーション機能を使用できる、PropertyGrid コントロールの UI オートメーション サポートが有効になりました。
  • 現在編集されているプロパティに対応する UI オートメーション要素が、対応するプロパティ項目の UI オートメーション要素の子になりました。
  • 親の PropertyGrid コントロールがカテゴリ ビューに設定されている場合、UI オートメーション プロパティ項目の要素は、対応するカテゴリ要素の子になります。

ToolStrip サポートの改善

  • UI オートメーション通知やその他の UI オートメーション機能を使用できる、ToolStrip コントロールの UI オートメーション サポートが有効になりました。
  • ToolStrip 項目間の移動が改善されました。
  • 項目モードでは、ナレーターのフォーカスは非表示にならず、非表示項目には移動しません。

視覚的な手掛かりの向上

  • 空の CheckedListBox コントロールでは、フォーカスを受け取ったときに、フォーカス インジケーターが表示されるようになりました。 メモ:UI オートメーション サポートは、実行時のコントロールでは有効になりますが、設計時には使用されません。 UI オートメーションの概要については、「UI オートメーションの概要」を参照してください。

キーボードでのコントロールのツールヒントの呼び出し

  • キーボードを使用してコントロールにフォーカスすることで、コントロール ツールヒントを呼び出せるようになりました。 この機能は、アプリケーションに対して明示的に有効にする必要があります (「これらの変更を選択する方法と選択しない方法」セクションを参照)
名前
スコープ Major
バージョン 4.8
種類 再ターゲット中

Windows Presentation Foundation (WPF)

WPF でのアクセシビリティの向上

説明

ハイ コントラストの改善

  • Expander コントロールにフォーカスを合わせると、表示されるようになりました。 .NET Framework の以前のバージョンでは、そうではありませんでした。
  • CheckBox および RadioButton コントロールを選択したとき、コントロールのテキストが .NET Framework の以前のバージョンより見やすくなりました。
  • 無効になっている ComboBox の境界が、無効なテキストと同じ色になりました。 .NET Framework の以前のバージョンでは、そうではありませんでした。
  • 無効になっているボタンにフォーカスを合わせたとき、正しいテーマ色が使われるようになりました。 .NET Framework の以前のバージョンでは、そうではありませんでした。
  • ドロップダウン ボタンが、ComboBox コントロールのスタイルが ToolBar.ComboBoxStyleKey に設定されている場合、表示されるようになりました。 .NET Framework の以前のバージョンでは、そうではありませんでした。
  • DataGrid コントロールの並べ替えインジケーターの矢印で、テーマの色が使われるようになりました。 .NET Framework の以前のバージョンでは、そうではありませんでした。
  • ハイパーリンクの既定のスタイルが、マウスでポイントされると正しいテーマの色に変わるようになりました。 .NET Framework の以前のバージョンでは、そうではありませんでした。
  • ラジオ ボタンに対するキーボード フォーカスが表示されるようになりました。 .NET Framework の以前のバージョンでは、そうではありませんでした。
  • DataGrid コントロールのチェック ボックス列で、キーボード フォーカスのフィードバックに予期される色が使われるようになりました。 .NET Framework の以前のバージョンでは、そうではありませんでした。
  • ComboBox および ListBox コントロールで、キーボード フォーカスのビジュアルが表示されるようになりました。 .NET Framework の以前のバージョンでは、そうではありませんでした。

スクリーン リーダーの操作性の向上

  • Expander コントロールが、スクリーン リーダーによってグループ (展開/折りたたみ) として正しく読み上げられるようになりました。
  • DataGridCell コントロールが、スクリーン リーダーによってデータ グリッド セル (ローカライズ済み) として正しく読み上げられるようになりました。
  • スクリーン リーダーが、編集可能な ComboBox の名前を読み上げるようになりました。
  • スクリーン リーダーが、PasswordBox コントロールを "ビューに項目がありません" と読み上げなくなりました。

LiveRegion のサポート

ナレーターなどのスクリーン リーダーでは、通常は現在フォーカスがあるユーザー インターフェイス要素を説明して、ユーザーがアプリケーションの UI を理解するのを助けます。 しかし、画面内のどこかの UI 要素が変わり、フォーカスがなくなった場合、ユーザーに通知されず、重要な情報を逃すことがあります。 LiveRegions は、この問題を解決するためのものです。 開発者はこれを利用して、UI 要素が大幅に変更されたことをスクリーン リーダーやその他の UI オートメーション クライアントに伝えることができます。 指示後、スクリーン リーダーでは、その変更をユーザーに通知する方法とタイミングが決定されます。 LiveSetting プロパティを使うと、UI に行われた変更をユーザーに通知するのがどの程度重要かをスクリーン リーダーに知らせることもできます。

提案される解決策

これらの変更を選択する方法と選択しない方法

アプリケーションでこれらの変更を利用するには、.NET Framework 4.7.1 以降で実行する必要があります。 アプリケーションは、次のいずれかの方法でこれらの変更を利用できます。

  • .NET Framework 4.7.1 を対象にします。 この方法をお勧めします。 .NET Framework 4.7.1 以降を対象とする WPF アプリケーションでは、これらのアクセシビリティの変更が既定で有効になっています。

  • 下の例のように、アプリ構成ファイルの <runtime> セクションで次の AppContext スイッチを追加し、それを 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 以降を対象とするアプリケーションで以前のアクセシビリティ動作を残す場合、この AppContext スイッチを明示的に true に設定することで以前のアクセシビリティ機能を選択できます。 UI オートメーションの概要については、「UI オートメーションの概要」を参照してください。

名前
スコープ Major
バージョン 4.7.1
種類 再ターゲット中

影響を受ける API

TextBox/PasswordBox の非装飾選択に SelectionTextBrush パブリック プロパティを追加する

説明

TextBoxPasswordBox非装飾ベースのテキスト選択を使用する WPF アプリケーションでは、開発者は、選択されたテキストのレンダリングを変更するために、新しく追加された SelectionTextBrush プロパティを設定できるようになりました。 既定では、HighlightTextBrushKey でこの色が変更されます。 非装飾ベースのテキスト選択が有効でない場合は、このプロパティで何も行われません。

提案される解決策

非装飾ベースのテキスト選択が有効になったら、PasswordBox.SelectionTextBrush および SelectionTextBrush プロパティを使用して、選択されたテキストの外観を変更することができます。 これは XAML を使用して実行できます。

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
名前
スコープ Major
バージョン 4.8
種類 再ターゲット中

影響を受ける API

HwndHost で DPI 変更中に子の HWND のサイズが正しく変更されるようになった

説明

.NET Framework 4.7.2 以前のバージョンでは、WPF がモニターごとの認識モードで実行されていた場合、モニター間でアプリケーションを移動するときなど、DPI の変更後に、HwndHost 内でホストされていたコントロールのサイズが正しく変更されませんでした。 この修正により、確実に、ホストされるコントロールのサイズが適切に変更されるようになります。

提案される解決策

アプリケーションでこれらの変更を利用するには、.NET Framework 4.7.2 以降で実行する必要があり、以下の例のように、アプリ構成ファイルの <runtime> セクションの次の AppContext スイッチ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 &#39;key1=true/false;key2=true/false  -->
<AppContextSwitchOverrides value="Switch.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater=false" />
</runtime>
</configuration>
名前
スコープ Major
バージョン 4.8
種類 再ターゲット中

Windows Workflow Foundation (WF)

Windows Workflow Foundation (WF) ワークフロー デザイナーでのアクセシビリティの向上

説明

Windows Workflow Foundation (WF) ワークフロー デザイナーは、アクセシビリティ テクノロジによって操作性が向上しています。 次のような改善点があります。

  • 一部のコントロールで、タブ オーダーが左から右、上から下に変更されます:
  • InitializeCorrelation アクティビティの関連付けデータを設定するための関連付けの初期化ウィンドウ
  • ReceiveSendSendReply、および ReceiveReply アクティビティのコンテンツ定義ウィンドウ
  • キーボードで利用できる機能が増えます:
  • アクティビティのプロパティを編集する際、プロパティ グループに初めてフォーカスを設定したときに、プロパティ グループをキーボードで折りたたむことができます。
  • 警告アイコンにキーボードでアクセスできるようになりました。
  • [プロパティ] ウィンドウの [その他のプロパティ] ボタンに、キーボードでアクセスできるようになりました。
  • キーボードを使って、ワークフロー デザイナーの [引数] および [変数] ウィンドウのヘッダー項目にアクセスできるようになりました。
  • 次のような場合に、フォーカスのある項目の可視性が向上しました:
  • ワークフロー デザイナーおよびアクティビティ デザイナーで使われているデータ グリッドへの行の追加。
  • ReceiveReply および SendReply アクティビティ内のフィールド間の Tab 移動。
  • 変数または引数の既定値の設定
  • スクリーン リーダーが正しく認識できるようになりました:
  • ワークフロー デザイナーで設定されたブレークポイント。
  • FlowSwitch<T>FlowDecisionCorrelationScope アクティビティ。
  • Receive アクティビティの内容。
  • InvokeMethod アクティビティのターゲットの種類。
  • TryCatch アクティビティの [例外] コンボ ボックスと [Finally] セクション。
  • メッセージング アクティビティの [メッセージの種類] コンボ ボックス、[関連付け初期化子の追加] ウィンドウのスプリッター、[コンテンツ定義] ウィンドウで、および [CorrelatesOn の定義] ウィンドウ (ReceiveSendSendReply、および ReceiveReply)。
  • ステート マシンの遷移と遷移先。
  • FlowDecision アクティビティの注釈とコネクタ。
  • アクティビティのコンテキスト (右クリック) メニュー。
  • プロパティ グリッドの、プロパティ値エディター、[検索のクリア] ボタン、[カテゴリ別] および [アルファベット順] の並べ替えボタン、[式エディター] ダイアログ。
  • ワークフロー デザイナーのズーム パーセンテージ。
  • Parallel および Pick アクティビティの区切り記号。
  • InvokeDelegate アクティビティ。
  • ディクショナリ アクティビティの [型の選択] ウィンドウ (Microsoft.Activities.AddToDictionary<TKey,TValue>Microsoft.Activities.RemoveFromDictionary<TKey,TValue> など)。
  • [.NET 型の参照と選択] ウィンドウ。
  • ワークフロー デザイナーでの階層リンク。
  • ハイ コントラスト テーマを選ぶと、要素間のコントラスト比の向上や、フォーカス要素に使われる選択ボックスの認識性の向上など、ワークフロー デザイナーとそのコントロールの表示について多くの点が向上していることがわかります。

提案される解決策

ワークフロー デザイナーが再ホストされたアプリケーションでは、次のいずれかを行うことでこれらの変更を利用できます。

  • .NET Framework 4.7.1 を対象にしてアプリケーションを再コンパイルします。 これらのアクセシビリティの変更が既定で有効になります。
  • アプリケーションの対象が .NET Framework 4.7 以前であっても、.NET Framework 4.7.1 上で実行している場合は、次の AppContext スイッチを app.config ファイルの <runtime> セクションに追加して 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 以降を対象とするアプリケーションで以前のアクセシビリティ動作を残す場合、この AppContext スイッチを明示的に true に設定することで以前のアクセシビリティ機能を選択できます。

名前
スコープ マイナー
バージョン 4.7.1
種類 再ターゲット中

ワークフロー XAML のシンボルのチェックサムが SHA1 から SHA256 に変更

説明

Visual Studio によるデバッグをサポートするために、ワークフロー ランタイムによって、ハッシュ アルゴリズムを使用してワークフロー XAML ファイルのチェックサムが生成されます。 .NET Framework 4.6.2 以前のバージョンでは、ワークフロー チェックサムのハッシュで MD5 アルゴリズムが使用され、FIPS 対応システムで問題が発生していました。 .NET Framework 4.7 以降では、既定のアルゴリズムが SHA1 に変更されました。 .NET Framework 4.8 以降では、既定のアルゴリズムが SHA256 に変更されました。

提案される解決策

チェックサム エラーに起因して、コードでワークフロー インスタンスを読み込めないか、適切なシンボルを見つけられない場合、AppContext スイッチ "Switch.System.Activities.UseSHA1HashForDebuggerSymbols" を true に設定してみてください。 コードは次のとおりです。

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

または、次のように構成します。

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Activities.UseSHA1HashForDebuggerSymbols=true" />
  </runtime>
</configuration>
名前
スコープ マイナー
バージョン 4.8
種類 再ターゲット中

ワークフロー XOML 定義および SqlTrackingService キャッシュ キーの MD5 から SHA256 への変更

説明

ワークフロー ランタイムでは、XOML で定義されているワークフロー定義のキャッシュが保持されます。 また、SqlTrackingService では、文字列によってキー指定されるキャッシュが保持されます。 これらのキャッシュは、チェックサム ハッシュ値を含む値によってキー指定されます。 .NET Framework 4.7.2 以前のバージョンでは、このチェックサムのハッシュで MD5 アルゴリズムが使用され、FIPS 対応システムで問題が発生していました。 .NET Framework 4.8 以降では、SHA256 のアルゴリズムが使用されます。ワークフロー ランタイムと SqlTrackingService は開始されるたびに値が再計算されるため、この変更では互換性の問題は発生しないはずです。 しかし、後方互換が提供されるため、お客様は必要に応じて、従来のハッシュ アルゴリズムの使用に戻すことができます。

提案される解決策

この変更により、ワークフローの実行時に問題が生じる場合は、次のように、AppContext スイッチのいずれか、または両方を設定してみてください。

  • "Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey" を true にする。
  • "Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey" を true にする。 コード内で以下のように指定します。
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey", true);
System.AppContext.SetSwitch("Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKey", true);

または、構成ファイルで次のようにします (WorkflowRuntime オブジェクトを作成しているアプリケーションの構成ファイルで、このようにする必要があります)。

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForWorkflowDefinitionDispenserCacheKey=true" />
<AppContextSwitchOverrides value="Switch.System.Workflow.Runtime.UseLegacyHashForSqlTrackingCacheKeytrue" />
</runtime>
</configuration>
名前
スコープ マイナー
バージョン 4.8
種類 再ターゲット中

ワークフロー XOML ファイルのチェックサムが MD5 から SHA256 に変更

説明

Visual Studio を使用した XOML ベースのワークフローのデバッグをサポートするため、XOML ファイルが含まれているワークフロー プロジェクトをビルドするときに、XOML ファイルのコンテンツのチェックサムが WorkflowMarkupSourceAttribute.MD5Digest 値として生成されたコードに含まれます。 .NET Framework 4.7.2 以前のバージョンでは、このチェックサムのハッシュで MD5 アルゴリズムが使用され、FIPS 対応システムで問題が発生していました。 .NET Framework 4.8 以降、使用されるアルゴリズムは SHA256 になります。 WorkflowMarkupSourceAttribute.MD5Digest との互換性を確保するため、生成されたチェックサムの最初の 16 バイトのみが使用されます。これにより、デバッグ中に問題が発生する可能性があります。 プロジェクトの再ビルドが必要になる場合があります。

提案される解決策

プロジェクトを再ビルドしても問題が解決しない場合は、AppContext スイッチ "Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum" を true に設定してみてください。コードでは次のようになります。

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

構成ファイルでは次のようになります (使用している MSBuild.exe の MSBuild.exe.config で行う必要があります)。

<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Workflow.ComponentModel.UseLegacyHashForXomlFileChecksum=true" />
</runtime>
</configuration>
名前
スコープ マイナー
バージョン 4.8
種類 再ターゲット中

.NET Framework 4.8.1

.NET Framework 4.8.1 では、アプリの互換性の問題は生じませんでした。