다음을 통해 공유


.NET SDK에서 더 작은 RID 그래프 사용

.NET 8 이상 버전을 대상으로 하는 프로젝트는 이제 더 작은 "이식 가능" RID(런타임 식별자) 그래프를 사용합니다.

이전 동작

.NET SDK는 프로젝트를 빌드하거나 게시할 때 복잡한 RID 그래프를 사용하여 자산을 확인했습니다.

새 동작

.NET 8부터 .NET SDK는 .NET 8 이상 버전을 대상으로 하는 프로젝트에 이식 가능 RID로만 구성된 더 작은 그래프를 사용합니다. 즉, SDK는 기본적으로 버전별 또는 Distro별 RID를 인식하지 않습니다. 프로젝트를 빌드할 때 다음과 같은 오류(또는 이와 유사)가 표시될 수 있습니다.

오류 NETSDK1083: 지정된 RuntimeIdentifier 'win10-x64'가 인식되지 않습니다. 자세한 내용은 https://aka.ms/netsdk1083 을 참조하세요.

도입된 버전

.NET 8 RC 1

호환성이 손상되는 변경의 형식

이 변경은 동작 변경이며 원본 호환성에도 영향을 미칠 수 있습니다.

변경 이유

RID 그래프는 유지 관리하고 이해하는 데 비용이 많이 들었기 때문에 .NET 자체가 취약한 방식으로 배포판을 인식해야 했습니다. .NET 팀과 커뮤니티는 그래프를 업데이트하고 이러한 업데이트를 이전 릴리스로 백포팅하는 데 적지 않은 시간을 소비합니다. 장기적인 목표는 RID 그래프 업데이트를 중지하고, RID 그래프 읽기를 중단하고, 결국에는 RID 그래프를 제거하는 것입니다. 이번 호환성이 손상되는 변경 사항은 이 목표를 향한 한 걸음입니다.

버전별 또는 배포판별 RID(예: , 및 win-<arch>) 대신 이식 가능한 RID(예linux-<arch>: osx.10.11-<arch>ubuntu.16.04-<arch>, linux-musl-<arch>osx-<arch>win10-<arch>)를 사용합니다.

프로젝트 파일(*.csproj, *.vbproj 또는 *.fsproj)에서 RuntimeIdentifier MSBuild 속성을 사용하여 RID를 지정하는 경우 그에 따라 변경합니다. 예를 들어 프로젝트 파일에서 다음으로 <RuntimeIdentifier>win-x64</RuntimeIdentifier> 변경 <RuntimeIdentifier>win10-x64</RuntimeIdentifier> 합니다.

<PropertyGroup>
  ...
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>

RID를 명령줄 인수로 지정하는 경우 비슷한 변경을 합니다. 예를 들어 대신 dotnet publish --framework net8.0 --runtime win10-x64명령을 dotnet publish --framework net8.0 --runtime win-x64사용합니다.

이전의 전체 RID 그래프를 사용하는 이전 동작으로 되돌려야 하는 경우 프로젝트 파일에서 UseRidGraph MSBuild 속성을 true로 설정할 수 있습니다. 그러나 이전 RID 그래프는 향후 다른 Distro이나 아키텍처를 처리하기 위해 업데이트되지 않습니다.

<PropertyGroup>
  <UseRidGraph>true</UseRidGraph>
</PropertyGroup>

참고 항목