다음을 통해 공유


API 호환성 도구

플랫폼 간 호환성은 .NET 라이브러리 작성자의 기본 요구 사항이 되었습니다. 그러나 어셈블리 및 패키지의 유효성을 검사하는 도구가 없으면 의도하지 않은 호환성이 손상되는 변경 내용이 포함될 수 있습니다. 라이브러리 작성자는 다중 대상 어셈블리가 호환되는지 확인해야 합니다. 예를 들어 .NET 6 및 .NET Standard 2.0을 다중 대상으로 지정하는 패키지는 .NET Standard 2.0 이진에 대해 컴파일된 코드를 .NET 6 이진에서 실행할 수 있는지 확인해야 합니다.

해당 변경 내용을 사용하는 소스가 변경 내용 없이도 계속해서 컴파일된다면 변경 내용이 안전하고 호환되는 것으로 생각할 수 있습니다. 그러나 소비자가 다시 컴파일되지 않은 경우 변경 내용이 런타임에 문제를 일으킬 수 있습니다. 예를 들어 메서드에 선택적인 매개 변수를 추가하거나 상수 값을 변경하면 이러한 종류의 호환성 문제를 일으킬 수 있습니다.

.NET SDK는 다양한 대상 프레임워크에 대해 빌드된 버전을 비교할 수 있는 다양한 방법을 제공합니다. 또한 기본 버전에 대해 최신 버전의 유효성을 검사하여 주요 변경 내용이 도입되지 않았는지 확인할 수 있습니다. MSBuild 작업을 사용하여 컴파일 시간에 어셈블리의 유효성을 검사하거나 압축할 때 패키지의 유효성을 검사합니다. 또는 Microsoft.DotNet.ApiCompat.Tool 전역 도구를 사용하여 MSBuild 외부에서 유효성을 검사합니다.

패키지 유효성 검사에 대한 자세한 내용은 패키지 유효성 검사를 참조하세요. 어셈블리 유효성 검사는 앱을 압축할 수 없는 경우에 사용해야 합니다. 어셈블리 유효성 검사에 대한 자세한 내용은 어셈블리 유효성 검사를 참조하세요.

참고 항목

MSBuild 작업으로 어셈블리 유효성 검사를 실행하려면 Microsoft.DotNet.ApiCompat.Task에 패키지 참조를 추가해야 합니다. 마찬가지로 .NET SDK에서 아직 사용할 수 없는 최신 기능을 테스트하려는 경우 이 패키지에 대한 참조를 추가할 수도 있습니다. 예를 들어 .NET 8 SDK를 사용하는 동안 Microsoft.DotNet.ApiCompat.Task 패키지의 9.0.100 미리 보기 버전을 참조할 수 있습니다.

strict 모드

기본적으로 유효성 검사는 호환성 검사를 수행합니다. 그러나 strict 모드로 옵트인할 수도 있습니다. strict 모드에서 유효성 검사는 같음 검사를 수행합니다. 같음은 호환되는 API 추가 또는 어셈블리 변경 내용이 없음을 의미합니다.

strict 모드의 사용 사례는 다음과 같습니다.

  • 일반적으로 API 추가가 금지된 서비스입니다.
  • API 변경 내용을 추적하기 위한 것입니다. ApiCompatGenerateSuppressionFiletrue로 설정하는 경우 API 호환성 기능은 제거 파일의 모든 호환성 차이를 기록합니다.

명령줄 도구에 대해 strict 모드를 사용하도록 설정하려면 --strict-mode 옵션 또는 --enable-strict* 옵션 중 하나를 지정합니다. MSBuild 작업에 strict 모드를 사용하도록 설정하려면 프로젝트 파일에 다음 MSBuild 속성 중 하나 이상을 추가합니다.