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

해당 없음

참고 항목