다음을 통해 공유


.NET Framework를 대상으로 할 때 사용되는 기본 RID

.NET 8에서는 이상 버전을 대상으로 지정할 때 더 작은 RID(런타임 식별자) 그래프 사용하도록 변경이 도입되었습니다.

그러나 이렇게 하면 .NET 및 .NET Framework를 다중 대상으로 지정하는 고객에게 문제가 발생했습니다. 복원이 한 번 발생하지만 .NET Framework 프로젝트에서 이전 RID 기본값을 사용하려고 시도하고 .NET(Core) 프로젝트가 축소된 새 RID 그래프를 사용하려고 하기 때문입니다.

이 다중 대상 지정 시나리오를 사용하도록 설정하기 위해 이제 이 시나리오에서 새 RID 그래프와 호환되는 기본 RID가 사용됩니다.

도입된 버전

.NET 9 GA

이전 동작

RID 집합이 없는 .NET Framework를 대상으로 하는 SDK 스타일 프로젝트는 기본적으로 win7-x86 또는 win7-x64로 설정됩니다.

새 동작

RID가 설정되지 않은 .NET Framework를 대상으로 하는 SDK 스타일 프로젝트는 기본적으로 win-x86 또는 win-x64입니다.

호환성이 손상되는 변경 유형

이 변경 내용은 원본 호환성영향을 줄 수 있습니다.

변경 이유

.NET Framework 애플리케이션은 이식 가능한 RID 그래프와 호환되지 않는 기본 RID를 받고 있었습니다. 이러한 비호환성으로 인해 복원 오류가 발생했습니다.

Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(266,5): 오류 NETSDK1047: Assets 파일 'D:\1\s\artifacts\obj\MSBuild\project.assets.json'에 'net472/win7-x64'에 대한 대상이 없습니다. 복원이 실행되었고 프로젝트의 TargetFrameworks에 'net472'를 포함했는지 확인합니다. 프로젝트의 RuntimeIdentifiers에 'win7-x64'를 포함해야 할 수도 있습니다. [MSBuild.csproj::TargetFramework=net472]>

자세한 내용은 dotnet/sdk 문제 #35575참조하세요.

이 변경의 영향을 받는 경우 다음 작업 중 하나를 선택합니다.

  • 런타임 식별자를 이식 가능한 RID 그래프에서 지원하는 값으로 업데이트합니다. 프로젝트 파일 예제:

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

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

  • 프로젝트 파일에서 UseRidGraph을(를) true로 설정하여 이전 RID 그래프로 다시 전환합니다.

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

영향을 받는 API

없음.