다음을 통해 공유


MSBuild 사용자 지정 파생 빌드 이벤트가 더 이상 사용되지 않음

빌드 확장성(주로 사용자 지정 작업)에 의해 생성된 BuildEventArgs 서브클래스의 사용자 지정 파생 빌드 이벤트는 지원이 중단되었습니다.

이전 동작

이전에는 모든 하위 클래스 BuildEventArgs 에서 파생되어 사용자 지정 작업 및 기타 빌드 확장성 지점에서 해당 형식을 자유롭게 사용할 수 있습니다.

새 동작

.NET 8부터 명령줄에서 파생된 형식을 사용하는 코드와 .NET 8 버전의 MSBuild를 사용하여 빌드할 경우 빌드 오류가 발생합니다.

사용자 지정 이벤트 형식 'MyCustomBuildEventArgs'를 serialization하는 동안 안전하지 않은 BinaryFormatter를 사용합니다. 이 기능은 곧 더 이상 사용되지 않습니다. 대신 Extended*EventArgs를 사용하세요. 추가 정보: https://aka.ms/msbuild/eventargs.

.NET 10에서 오류 메시지가 다음과 같이 변경되었습니다.

사용자 지정 이벤트 유형 'MyCustomBuildEventArgs'는 모든 사용자 지정 이벤트 형식이 더 이상 사용되지 않으므로 지원되지 않습니다. 대신 Extended*EventArgs를 사용하세요. 추가 정보: https://aka.ms/msbuild/eventargs.

Visual Studio 버전 17.10부터 동일한 동작이 Visual Studio의 빌드에 적용됩니다.

도입된 버전

.NET 8 RC 1

변경 유형

이 변경 사항은 행동 변화입니다.

변경 이유

BinaryFormatter serialization은 .NET 8 이상 버전에서 사용되지 않습니다. 모든 BinaryFormatter 의 사용은 안전하지 않은 것으로 간주되며 런타임에 예외가 발생합니다. MSBuild 사용자 지정 파생 빌드 이벤트가 사용 BinaryFormatter되므로 빌드에서 이러한 이벤트를 사용하면 빌드가 중단됩니다. 새 빌드 오류는 더 우아한 방식으로 실패를 처리합니다.

사용자 지정 파생 빌드 이벤트 대신 확장성을 위해 새로 도입된 기본 제공 이벤트 중 하나를 사용합니다.

또는 환경 변수 MSBUILDCUSTOMBUILDEVENTWARNING 를 .가 아닌 1다른 변수로 명시적으로 설정하여 검사를 일시적으로 사용하지 않도록 설정할 수 있습니다.

영향을 받는 API