이 문서에서는 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의 모든 최신 버전