Share via


.NET Framework 4.8.x로의 마이그레이션을 위한 대상 다시 지정 변경 내용

이 문서에는 .NET Framework 4.84.8.1에서 발생한 앱 호환성 문제가 나열되어 있습니다.

.NET Framework 4.8

코어

관리형 암호화 클래스가 FIPS 모드에서 CryptographyException을 throw하지 않음

설명

.NET Framework 4.7.2 이전 버전에서 SHA256Managed와 같은 관리형 암호화 공급자 클래스는 시스템 암호화 라이브러리가 FIPS 모드로 구성될 때 CryptographicException을 throw합니다. 이러한 예외는 관리형 버전이 FIPS(Federal Information Processing) 140-2 인증을 받지 않았고 FIPS 규칙에 따라 승인된 것으로 간주되지 않는 암호화 알고리즘을 차단하기 때문에 throw됩니다. FIPS 모드에서 개발 머신을 사용하는 개발자는 거의 없기 때문에 이러한 예외는 프로덕션 시스템에서만 자주 throw됩니다. 이러한 경우 .NET Framework 4.8 이상 버전을 대상으로 하는 애플리케이션은 CryptographicException이 더 이상 기본적으로 제공되지 않도록 자동으로 최신의 완화된 정책으로 전환됩니다. 대신, 관리형 암호화 클래스는 암호화 작업을 시스템 암호화 라이브러리로 리디렉션합니다. 이 정책 변경에 따라 개발자 환경과 프로덕션 환경 간에 혼동될 수 있는 차이가 효과적으로 제거되고 네이티브 구성 요소와 관리형 구성 요소가 동일한 암호화 정책에서 작동합니다.

제안 해결 방법

이 동작이 바람직하지 않은 경우 애플리케이션 구성 파일의 <runtime> 섹션에 다음 AppContextSwitchOverrides 구성 설정을 추가하여 CryptographicException이 FIPS 모드에서 throw되도록 이전 동작을 옵트아웃하고 복원할 수 있습니다.

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

애플리케이션이 .NET Framework 4.7.2 이하를 대상으로 하는 경우 애플리케이션 구성 파일의 <runtime> 섹션에 다음 AppContextSwitchOverrides 구성 설정을 추가하여 이 변경 내용을 옵트인할 수도 있습니다.

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Security.Cryptography.UseLegacyFipsThrow=false" />
</runtime>
속성
Scope Microsoft Edge
버전 4.8
형식 대상 변경

영향을 받는 API

Windows Forms

.NET 4.8에 대한 Windows Forms 콘트롤의 접근성 개선 사항

설명

Windows Forms Framework는 Windows Forms 고객을 더욱 효과적으로 지원하도록 접근성 기술로 작업하는 방법을 지속적으로 개선합니다. 여기에는 다음과 같은 변경이 포함됩니다.

  • 고대비 모드 중에 표시를 개선하기 위한 변경 내용
  • 내레이터와 상호 작용의 변경 내용입니다.
  • 액세스 가능한 계층 구조의 변경 내용(UI Automation 트리를 통한 탐색 개선).

제안 해결 방법

이러한 변경을 옵트인 또는 옵트아웃하는 방법 이러한 변경의 이점을 활용하려면 애플리케이션은 .NET Framework 4.8에서 실행되어야 합니다. 애플리케이션은 다음과 같은 방법으로 이러한 변경 내용을 옵트인할 수 있습니다.

  • .NET Framework 4.8을 대상으로 다시 컴파일됩니다. 이러한 접근성 변경 내용은 .NET Framework 4.8을 대상으로 하는 Windows Forms 애플리케이션에서 기본적으로 활성화됩니다.
  • .NET Framework 4.7.2 이전 버전을 대상으로 하며 다음 예제와 같이 app.config 파일의 <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이 throw됩니다. 예외 메시지는 키보드 도구 설명에서 수준 3의 접근성 개선을 사용하도록 요구함을 나타냅니다.

고대비 테마에서 OS 정의 색 사용

  • 고대비 테마를 개선했습니다.

향상된 내레이터 지원

향상된 CheckedListBox 접근성 지원

  • CheckedListBox 컨트롤에 대한 향상된 내레이터 지원. 키보드를 사용하여 CheckedListBox 컨트롤로 이동할 때 내레이터는 CheckedListBox 항목에 초점을 맞추고 이를 공지합니다.
  • 이제 빈 CheckedListBox 컨트롤에 컨트롤이 집중되면 가상 첫 번째 항목에 대해 포커스 사각형이 그려집니다.

향상된 ComboBox 접근성 지원

  • UI Automation 알림 및 기타 UI Automation 기능을 사용할 수 있는 기능이 있는 ComboBox 컨트롤에 대한 UI Automation 지원을 사용할 수 있습니다. 개선된 DataGridView 접근성 지원

  • UI Automation 알림 및 기타 UI Automation 기능을 사용할 수 있는 기능이 있는 DataGridView 컨트롤에 대한 UI Automation 지원을 사용할 수 있습니다.

  • DataGridViewComboBoxEditingControl 또는 DataGridViewTextBoxEditingControl에 해당하는 UI Automation 요소는 이제 해당 편집 셀의 자식입니다.

향상된 LinkLabel 접근성 지원

  • 향상된 LinkLabel 컨트롤 접근성: 내레이터는 해당 LinkLabel 컨트롤이 비활성화된 경우 링크의 비활성화 상태를 알립니다.

향상된 ProgressBar 접근성 지원

  • UI Automation 알림 및 기타 UI Automation 기능을 사용할 수 있는 기능이 있는 ProgressBar 컨트롤에 대한 UI Automation 지원을 사용할 수 있습니다. 개발자는 이제 내레이터가 진행률을 표시하기 위해 알릴 수 있는 UI Automation 알림을 사용할 수 있습니다. UI 자동화 알림 이벤트를 비롯하여 UI 자동화 이벤트 개요는 UI 자동화 이벤트 개요를 참조하세요.

향상된 PropertyGrid 접근성 지원

  • UI Automation 알림 및 기타 UI Automation 기능을 사용할 수 있는 기능이 있는 PropertyGrid 컨트롤에 대한 UI Automation 지원을 사용할 수 있습니다.
  • 현재 편집된 속성에 해당하는 UI Automation 요소는 이제 해당 속성 항목 UI Automation 요소의 자식이 됩니다.
  • 부모 PropertyGrid 컨트롤이 범주 보기로 설정된 경우 UI Automation 속성 항목은 이제 해당 범주 요소의 자식이 됩니다.

향상된 ToolStrip 지원

  • UI Automation 알림 및 기타 UI Automation 기능을 사용할 수 있는 기능이 있는 ToolStrip 컨트롤에 대한 UI Automation 지원을 사용할 수 있습니다.
  • ToolStrip 항목을 통한 탐색 기능이 개선되었습니다.
  • 항목 모드에서는 내레이터 포커스는 사라지지 않고 숨겨진 항목으로 이동하지 않습니다.

개선된 시각적 표시

  • 이제 빈 CheckedListBox 컨트롤은 포커스를 수신할 때 포커스 표시기를 표시합니다. 참고: UI 자동화 지원은 런타임의 컨트롤에 대해 활성화되지만 디자인 타임에는 사용되지 않습니다. UI 자동화 개요는 UI Automation 개요를 참조하세요.

키보드를 사용하여 컨트롤의 도구 설명 호출

  • 이제 컨트롤 도구 설명은 키보드로 집중하여 호출할 수 있습니다. 이 기능은 애플리케이션에 대해 명시적으로 사용하도록 설정해야 합니다("이 변경 내용을 옵트인 또는 옵트아웃하는 방법" 섹션 참조).
속성
Scope 주요함
버전 4.8
형식 대상 변경

WPF(Windows Presentation Foundation)

WPF의 접근성 개선 사항

설명

고대비 개선 사항

  • 이제 Expander 컨트롤에 대한 포커스가 표시됩니다. 이전 버전의 .NET Framework에서는 그렇지 않았습니다.
  • CheckBoxRadioButton 컨트롤의 텍스트를 선택하면 이전 .NET Framework 버전보다 보기 쉽습니다.
  • 비활성화된 ComboBox의 테두리는 이제 비활성화된 텍스트와 동일한 색입니다. 이전 버전의 .NET Framework에서는 그렇지 않았습니다.
  • 이제 비활성화되고 포커스가 있는 단추는 올바른 테마 색을 사용합니다. 이전 버전의 .NET Framework에서는 그러지 않았습니다.
  • 이제는 ComboBox 컨트롤의 스타일이 ToolBar.ComboBoxStyleKey으로 설정된 경우 드롭다운 단추가 표시됩니다. 이전 버전의 .NET Framework에서는 그렇지 않았습니다.
  • 이제 DataGrid 컨트롤의 정렬 표시기 화살표는 테마 색을 사용합니다. 이전 버전의 .NET Framework에서는 그러지 않았습니다.
  • 이제 마우스를 위에 가져가면 기본 하이퍼링크 스타일이 올바른 테마 색으로 변경됩니다. 이전 버전의 .NET Framework에서는 그러지 않았습니다.
  • 이제 라디오 단추에서 바로 가기 포커스가 표시됩니다. 이전 버전의 .NET Framework에서는 그렇지 않았습니다.
  • 이제 DataGrid 컨트롤의 확인란 열은 바로 가기 포커스 피드백에 예상되는 색을 사용합니다. 이전 버전의 .NET Framework에서는 그러지 않았습니다.
  • 이제 바로 가기 포커스 시각적 개체가 ComboBoxListBox 컨트롤에 표시됩니다. 이전 버전의 .NET Framework에서는 그렇지 않았습니다.

화면 읽기 프로그램 상호 작용 개선 사항

  • 이제 Expander 컨트롤은 화면 읽기 프로그램에서 그룹(확장/축소)으로 올바르게 추가됩니다.
  • 이제 DataGridCell 컨트롤은 화면 읽기 프로그램에서 데이터 그리드(지역화됨)으로 올바르게 추가됩니다.
  • 이제 화면 읽기 프로그램이 편집 가능한 ComboBox의 이름을 추가합니다.
  • PasswordBox 컨트롤은 더 이상 화면 읽기 프로그램에서 “보기의 항목 없음”으로 추가되지 않습니다.

LiveRegion 지원

내레이터와 같은 화면 판독기는 현재 포커스가 있는 UI 요소를 설명하는 애플리케이션의 UI(사용자 인터페이스)를 사용자가 이해하는 데 도움을 줍니다. 그러나 화면에서 UI 요소가 변경되고 포커스가 없는 경우 사용자는 알림을 받지 못하고 중요한 정보를 놓칠 수 있습니다. LiveRegions는 이 문제를 해결해야 합니다. 개발자는 화면 판독기 또는 다른 UI Automation 클라이언트에게 UI 요소에 중요한 변경 내용이 만들어졌음을 알리는 데 사용할 수 있습니다. 화면 판독기는 사용자에게 이 변경 내용을 알리는 방법 및 시점을 결정할 수 있습니다. 또한 LiveSetting 속성을 통해 UI에 대한 변경 내용을 사용자에게 알리는 것이 얼마나 중요한지 화면 읽기 프로그램에 알릴 수 있습니다.

제안 해결 방법

이 변경 내용을 옵트인 또는 옵트아웃하는 방법

애플리케이션이 이러한 변경의 이점을 활용하도록 하기 위해 .NET Framework 4.7.1 이상에서 실행해야 합니다. 애플리케이션은 다음과 같은 방법으로 이러한 변경의 이점을 활용할 수 있습니다.

  • .NET Framework 4.7.1을 대상으로 지정합니다. 이는 권장되는 방법입니다. 이러한 서비스 효율성 변경 내용은 .NET Framework 4.7.1 이상을 대상으로 하는 WPF 애플리케이션에서 기본적으로 활성화됩니다.

  • 다음 예제와 같이 app config 파일의 <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 Automation 개요를 참조하세요.

이름
Scope 주요함
버전 4.7.1
형식 대상 변경

영향을 받는 API

TextBox/PasswordBox 비표시기 선택 영역에 SelectionTextBrush 공용 속성 추가

설명

TextBoxPasswordBox에 대해 비표시기 기반 텍스트 선택을 사용하는 WPF 애플리케이션에서 개발자는 이제 새로 추가된 SelectionTextBrush 속성을 설정하여 선택한 텍스트의 렌더링을 변경할 수 있습니다. 기본적으로 이 색은 HighlightTextBrushKey와 함께 변경됩니다. 비표시기 기반 텍스트 선택 영역이 활성화되지 않은 경우 이 속성은 아무 작업도 수행하지 않습니다.

제안 해결 방법

비표시기 기반 텍스트 선택이 활성화되면 PasswordBox.SelectionTextBrushSelectionTextBrush 속성을 사용하여 선택한 텍스트의 모양을 변경할 수 있습니다. 이는 XAML을 사용하여 달성할 수 있습니다.

<TextBox SelectionBrush="Red" SelectionTextBrush="White"  SelectionOpacity="0.5"
Foreground="Blue" CaretBrush="Blue">
This is some text.
</TextBox>
이름
Scope 주요함
버전 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>
이름
Scope 주요함
버전 4.8
형식 대상 변경

Windows WF(Workflow Foundation)

Windows WF(Workflow Foundation) 워크플로 디자이너의 접근성 개선 사항

세부 정보

Windows WF(Workflow Foundation) 워크플로 디자이너는 접근성 기술 작동 방법을 개선합니다. 개선 사항에는 다음과 같은 변경 내용이 포함됩니다.

  • 일부 컨트롤에서 왼쪽에서 오른쪽으로, 위쪽에서 아래쪽으로 탭 순서를 변경합니다.
  • InitializeCorrelation 작업에 대한 상관 관계 데이터를 설정하는 초기화 상관 관계 창
  • Receive, Send, SendReplyReceiveReply 작업에 대한 콘텐츠 정의 창
  • 바로 가기를 통해 추가 함수가 지원됩니다.
  • 작업의 속성을 편집할 때 처음으로 포커스된 경우 바로 가기에서 속성 그룹을 축소할 수 있습니다.
  • 이제 경고 아이콘은 바로 가기에서 액세스할 수 있습니다.
  • 바로 가기에서 속성 창의 추가 속성 단추에 액세스할 수 있습니다.
  • 이제 바로 가기 사용자는 워크플로 디자이너의 인수 및 변수 창에 있는 헤더 항목에 액세스할 수 있습니다.
  • 다음과 같은 경우 포커스가 있는 항목의 표시 유형 향상
  • 워크플로 디자이너 및 작업 디자이너에서 사용하는 데이터 그리드에 행 추가
  • ReceiveReplySendReply 작업에서 필드 누름
  • 변수 또는 인수에 대한 기본값 설정
  • 이제 화면 읽기 프로그램이 다음 항목을 올바르게 인식합니다.
  • 워크플로 디자이너에서 설정된 중단점
  • FlowSwitch<T>, FlowDecisionCorrelationScope 작업
  • Receive 작업의 콘텐츠
  • InvokeMethod 작업의 대상 유형
  • TryCatch 작업의 예외 콤보 상자 및 마지막 섹션
  • 메시지 유형 콤보 상자, 상관 관계 이니셜라이저 추가 창의 분할기, 콘텐츠 정의 창 및 메시징 작업의 CorrelatesOn 정의 창(Receive, Send, SendReplyReceiveReply)
  • 상태 컴퓨터 전환 및 전환 대상
  • FlowDecision 작업의 주석 및 커넥터
  • 작업의 팝업(마우스 오른쪽 단추 클릭) 메뉴
  • 속성 값 편집기, 검색 정리 단추, 범주별으로 및 사전순 정렬 단추 및 속성 그리드의 식 편집기 대화 상자
  • 워크플로 디자이너의 확대/축소 백분율
  • ParallelPick 작업의 구분 기호
  • 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로 명확하게 설정하여 레거시 액세스 가능성 기능 사용을 옵트인할 수 있습니다.

이름
Scope
버전 4.7.1
형식 대상 변경

SHA1에서 SHA256으로 변경된 기호에 대한 워크플로 XAML 체크섬

설명

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>
이름
Scope
버전 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>
이름
Scope
버전 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>
이름
Scope
버전 4.8
형식 대상 변경

.NET Framework 4.8.1

.NET Framework 4.8.1에서는 앱 호환성 문제가 발생하지 않았습니다.