この記事では、.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 は既定でスローされなくなります。 代わりに、マネージド暗号化クラスは、暗号化操作をシステム暗号化ライブラリにリダイレクトします。 このポリシーの変更により、開発者環境と運用環境の間の混乱を招く可能性のある違いが効果的に排除され、ネイティブ コンポーネントとマネージド コンポーネントが同じ暗号化ポリシーで動作します。
提案
この動作が望ましくない場合は、アプリケーション構成ファイルの <runtime> セクションに次の AppContextSwitchOverrides 構成設定を追加して、FIPS モードでCryptographicExceptionがスローされるように、その動作をオプトアウトして以前の動作を復元できます。
<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>
名前 | 価値 |
---|---|
範囲 | エッジ |
バージョン | 4.8 |
タイプ | リターゲティング |
影響を受ける API
- System.Security.Cryptography.AesManaged
- System.Security.Cryptography.MD5Cng
- System.Security.Cryptography.MD5CryptoServiceProvider
- System.Security.Cryptography.RC2CryptoServiceProvider
- System.Security.Cryptography.RijndaelManaged
- System.Security.Cryptography.RIPEMD160Managed
- System.Security.Cryptography.SHA1Managed
- System.Security.Cryptography.SHA256Managed
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 以前のバージョンを対象とし、次の AppContext スイッチをアプリ 構成ファイルの
<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;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
に明示的に設定することで、従来のアクセシビリティ機能の使用をオプトインできます。キーボードツールヒント呼び出しのサポートを有効にするには、AppContextSwitchOverrides 値に Switch.System.Windows.Forms.UseLegacyToolTipDisplay=false
行を追加する必要があります。
<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 アクセシビリティのサポートの強化
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 オートメーションの概要」を参照してください。
キーボードを使用したコントロールのツールヒントの呼び出し
- キーボードを使用してコントロールにフォーカスを合わせて、コントロールのヒントを呼び出すようになりました。 この機能は、アプリケーションに対して明示的に有効にする必要があります ( 「これらの変更をオプトインまたはオプトアウトする方法」セクションを参照してください)
名前 | 価値 |
---|---|
範囲 | 少佐 |
バージョン | 4.8 |
タイプ | リターゲティング |
Windows プレゼンテーション ファンデーション (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 要素を記述します。 ただし、UI 要素が画面のどこかで変更され、フォーカスがない場合は、ユーザーに通知されず、重要な情報を見逃す可能性があります。 LiveRegions は、この問題を解決するためのものです。 開発者は、これを使用して、UI 要素に対して重要な変更が行われていることをスクリーン リーダーまたはその他の UI オートメーション クライアントに通知できます。 スクリーン リーダーは、この変更をユーザーに通知する方法とタイミングを決定できます。 LiveSetting プロパティを使用すると、UI に加えられた変更をユーザーに通知することがいかに重要であるかをスクリーン リーダーに知らせることもできます。
提案
これらの変更をオプトインまたはオプトアウトする方法
アプリケーションでこれらの変更を利用するには、.NET Framework 4.7.1 以降で実行する必要があります。 アプリケーションは、次のいずれかの方法でこれらの変更の恩恵を受けることができます。
ターゲット .NET Framework 4.7.1。 これは推奨されるアプローチです。 これらのアクセシビリティの変更は、.NET Framework 4.7.1 以降を対象とする WPF アプリケーションで既定で有効になっています。
次の例に示すように、アプリ構成ファイルの セクションに次の
<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
に明示的に設定することで、レガシ アクセシビリティ機能の使用をオプトインできます。
UI オートメーションの概要については、「UI オートメーションの概要」を参照してください。
名前 | 価値 |
---|---|
範囲 | 少佐 |
バージョン | 4.7.1 |
タイプ | リターゲティング |
影響を受ける API
- AutomationElementIdentifiers.LiveSettingProperty
- AutomationElementIdentifiers.LiveRegionChangedEvent
- System.Windows.Automation.AutomationLiveSetting
- AutomationProperties.LiveSettingProperty
- AutomationProperties.SetLiveSetting(DependencyObject, AutomationLiveSetting)
- AutomationProperties.GetLiveSetting(DependencyObject)
- AutomationPeer.GetLiveSettingCore()
SelectionTextBrush パブリック プロパティを TextBox/PasswordBox 非装飾選択に追加する
詳細
TextBoxとPasswordBoxに非装飾ベースのテキスト選択を使用する WPF アプリケーションでは、開発者は、選択したテキストのレンダリングを変更するために、新しく追加された SelectionTextBrush プロパティを設定できるようになりました。 既定では、この色は HighlightTextBrushKeyで変更されます。 非装飾ベースのテキスト選択が有効になっていない場合、このプロパティは何も行いません。
提案
装飾ベース以外のテキスト選択を有効にすると、 PasswordBox.SelectionTextBrush プロパティと SelectionTextBrush プロパティを使用して、選択したテキストの外観を変更できます。 これは、XAML を使用して実現できます。
<TextBox SelectionBrush="Red" SelectionTextBrush="White" SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
名前 | 価値 |
---|---|
範囲 | 少佐 |
バージョン | 4.8 |
タイプ | リターゲティング |
影響を受ける API
- TextBoxBase.SelectionTextBrushProperty
- TextBoxBase.SelectionTextBrush
- System.Windows.Controls.TextBox
- System.Windows.Controls.PasswordBox
HWndHost で DPI の変更中に子 HWND のサイズが正しく変更されるようになりました
詳細
.NET Framework 4.7.2 以前のバージョンでは、WPF が Per-Monitor 対応モードで実行されていた場合、アプリケーションをモニター間で移動する場合など、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 'key1=true/false;key2=true/false -->
<AppContextSwitchOverrides value="Switch.System.Windows.DoNotUsePresentationDpiCapabilityTier2OrGreater=false" />
</runtime>
</configuration>
名前 | 価値 |
---|---|
範囲 | 少佐 |
バージョン | 4.8 |
タイプ | リターゲティング |
Windows Workflow Foundation (WF)
Windows Workflow Foundation (WF) ワークフロー デザイナーのアクセシビリティの向上
詳細
Windows Workflow Foundation (WF) ワークフロー デザイナーは、アクセシビリティ テクノロジでの動作を改善しています。 これらの機能強化には、次の変更が含まれます。
- 一部のコントロールでは、タブ オーダーが左から右、上から下に変更されます。
- InitializeCorrelation アクティビティの関連付けデータを設定するための [関連付けの初期化] ウィンドウ
- Receive、Send、SendReply、および ReceiveReply アクティビティのコンテンツ定義ウィンドウ
- キーボードを使用して、その他の機能を使用できます。
- アクティビティのプロパティを編集する場合、プロパティ グループは、最初にフォーカスされたときにキーボードで折りたたむことができます。
- 警告アイコンにキーボードでアクセスできるようになりました。
- [プロパティ] ウィンドウの [その他のプロパティ] ボタンにキーボードでアクセスできるようになりました。
- キーボード ユーザーは、ワークフロー デザイナーの [引数] ウィンドウと [変数] ペインのヘッダー項目にアクセスできるようになりました。
- フォーカスのある項目の視認性が次のような場合に向上しました。
- ワークフロー デザイナーとアクティビティ デザイナーで使用されるデータ グリッドに行を追加する。
- ReceiveReply および SendReply アクティビティのフィールド間のタブ移動。
- 変数または引数の既定値の設定
- スクリーン リーダーで正しく認識できるようになりました。
- ワークフロー デザイナーで設定されたブレークポイント。
- FlowSwitch<T>、FlowDecision、CorrelationScope アクティビティ。
- Receive アクティビティの内容。
- InvokeMethod アクティビティのターゲットの種類。
- TryCatch アクティビティの例外コンボ ボックスと Finally セクション。
- メッセージング アクティビティの [メッセージの種類] コンボ ボックス、[関連付け初期化子の追加] ウィンドウのスプリッター、[コンテンツ定義] ウィンドウで、および [CorrelatesOn の定義] ウィンドウ (Receive、Send、SendReply、および 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 ファイルを含むワークフロー プロジェクトがビルドされると、 WorkflowMarkupSourceAttribute.MD5Digest 値として生成されたコードに XOML ファイルの内容のチェックサムが含まれます。 .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 では、アプリの互換性の問題は導入されませんでした。
.NET