다음을 통해 공유


진단 코드 MSB3825

이 문서에서는 MSB3825 경고 코드에 대해 설명합니다.

메시지 텍스트

MSB3825: Resource 'value' of type 'value' may be deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to known security risks and is removed from .NET 9+. If you wish to continue using it, set property 'GenerateResourceWarnOnBinaryFormatterUse' to false. More information: https://aka.ms/binaryformatter-migration-guide

설명

이 경고는 .NET 8 이하에서 발생합니다. 이전에 임의 .NET 형식 BinaryFormatter을 직렬화 및 역직렬화하는 데 일반적으로 사용되었던 사용되지 않는 .NET 형식은 역직렬화 프로세스를 통해 임의 .NET 형식을 어셈블리에 삽입할 수 있으므로 안전한 것으로 간주되지 않습니다.

.NET 9는 보안 알고리즘을 사용하여 BinaryFormatter를 처리하므로 .NET 9를 사용할 때는 문제가 없습니다.

해결 방법

.NET 9로 업그레이드하는 경우 리소스에 대해 이 경고가 표시되지 않지만 코드의 다른 부분에서 사용하는 BinaryFormatter경우 다른 솔루션을 구현해야 할 수 있습니다. 대체 방법은 마이그레이션 가이드 를 참조하세요 BinaryFormatter.

.NET 8 이하의 경우 메시지에 설명된 대로 속성을 false로 설정 GenerateResourceWarnOnBinaryFormatterUse 하거나 다음과 같이 프로젝트 파일의 속성 그룹으로 속성을 설정 $(NoWarn) 하여 경고를 표시하지 않을 수 있습니다.

<PropertyGroup>
   <!-- other properties -->
   <GenerateResourceWarnOnBinaryFormatterUse>false<GenerateResourceWarnOnBinaryFormatterUse>
   <!-- or -->
   <NoWarn>$(NoWarn);MSB3825</NoWarn>
</PropertyGroup>

적용 대상

MSBuild의 모든 최신 버전