Visual Studio의 C++/CLI 프로젝트
.NET 7에는 Int32 같은 기본 형식의 static abstract
인터페이스 멤버를 사용하는 제네릭 수학 API가 포함되어 있습니다. 이전 버전의 C++/CLI 컴파일러는 이러한 멤버와 호환되지 않았습니다. 이러한 멤버는 여러 기본 형식에서 사용되므로 제네릭 수학 기능을 직접 사용하지 않더라도 net7.0
을 대상으로 지정할 때 컴파일 오류가 발생합니다.
C++/CLI 외에도 기본 System 형식의 static abstract
인터페이스 멤버를 도입하면 이 새 언어 구문의 사용과 상위 호환되지 않는 다른 도구에서 문제가 발생할 수도 있습니다. 도구 작성자인 경우 이 변경의 영향을 받는 모든 도구를 업데이트하여 static abstract
인터페이스 멤버의 사용을 수용해야 합니다. 도움이 필요한 경우 dotnet/런타임 리포지토리에 문제를 제출하여 지침을 요청합니다.
이전 동작
이전에는 C++/CLI를 사용하여 .NET 프로젝트를 컴파일해도 기본 System 형식의 멤버와 관련된 오류가 발생하지 않았습니다.
새 동작
버전 17.2 이전의 Visual Studio 릴리스에서 C++/CLI를 사용하여 net7.0
프로젝트를 컴파일하면 다음 예제와 유사한 많은 오류가 발생합니다.
error C2253: 'System.Int32.Parse': pure specifier or abstract override specifier only allowed on virtual function
업그레이드 외에는 이 컴파일러 오류를 해결할 방법이 없습니다. 이는 기본 System 형식의 static abstract
인터페이스 멤버로 인해 생성됩니다. Visual Studio 2022 버전 17.2로 업그레이드하면 컴파일 오류가 더 이상 발생하지 않습니다.
암시적으로 구현된 static abstract
인터페이스 멤버를 호출할 수 있지만 Visual Studio 2022 버전 17.2에서도 C++/CLI는 명시적으로 구현된 static abstract
인터페이스 멤버 호출을 지원하지 않습니다.
도입된 버전
.NET 7
호환성이 손상되는 변경의 형식
이 변경은 소스 호환성에 영향을 줄 수 있습니다.
변경 이유
.NET 7에는 제네릭 수학 기능 집합에 대한 새 API 정의가 포함되어 있습니다. 이러한 API는 .NET 6에서 미리 보기 기능으로 도입되었으며 액세스 권한을 얻기 위해 System.Runtime.Experimental
패키지를 설치해야 했습니다. .NET 7부터 이러한 제네릭 수학 API는 "상자에" 포함됩니다.
권장 작업
.NET 7에서 C++/CLI를 계속 사용하려면 Visual Studio 2022 버전 17.2 이상으로 업그레이드합니다. 플랫폼 도구 집합을 v143으로 설정해야 할 수도 있습니다.
.NET 8로 업그레이드할 때 .NET 7을 건너뛴 경우 Visual Studio 2022 버전 17.8 이상과 플랫폼 도구 집합 v143 이상으로 업그레이드합니다.
영향을 받는 API
해당 없음
참고 항목
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기