다음을 통해 공유


NuGet 경고 NU1605

예 1

검색된 패키지 다운그레이드: 'PackageB'를 4.0.0에서 3.5.0으로 변경합니다. 프로젝트에서 직접 패키지를 참조하여 다른 버전을 선택합니다.
    'Project' -> 'PackageA' 4.0.0 -> 'PackageB'(>= 4.0.0)
    'Project' -> 'PackageB'(>= 3.5.0)

문제

종속성 패키지는 궁극적으로 해결된 복원보다 더 높은 버전의 패키지에 대한 버전 제약 조건을 지정했습니다. 이는 직접 종속성 우선 규칙 때문입니다. 패키지를 확인할 때 하위 그래프의 직접 패키지 버전은 동일한 ID로 먼 패키지의 패키지를 재정의합니다.

솔루션

복원 경고를 나타내는 프로젝트에 더 높은 버전의 패키지에 패키지 참조를 추가합니다.

위의 예제에서는 패키지 참조를 4.0.0으로 PackageB 변경합니다.

'PackageA' 4.0.0 -> 'PackageB' 4.0.0
'PackageB' 4.0.0

예제 2

검색된 패키지 다운그레이드: 'PackageC'를 2.0.0에서 1.1.0으로 변경합니다. 프로젝트에서 직접 패키지를 참조하여 다른 버전을 선택합니다.
    'Project' -> 'PackageA' 1.0.0 -> 'PackageB' 2.0.0 ->'PackageC'(>= 2.0.0)
    'Project' -> 'PackageA' 1.0.0 -> 'PackageC'(>= 1.1.0)

문제

종속성 패키지는 궁극적으로 해결된 복원보다 더 높은 버전의 패키지에 대한 버전 제약 조건을 지정했습니다. 이는 직접 종속성 우선 규칙 때문입니다. 패키지를 확인할 때 NuGet은 패키지 작성자의 의도를 적용하려고 합니다. 작성자가 PackageA 명시적으로 2.0.0에서 PackageC 1.1.0으로 다운그레이드 PackageC 했습니다.

솔루션

복원 경고를 나타내는 프로젝트에 더 높은 버전의 패키지에 패키지 참조를 추가합니다.

위의 예제에서는 패키지 참조를 2.0.0으로 PackageC 변경합니다.

'PackageA' 4.0.0 -> 'PackageB' 4.0.0
'PackageB' 4.0.0

예 3

검색된 패키지 다운그레이드: System.IO.FileSystem.Primitives를 4.3.0에서 4.0.1로 설정합니다. 프로젝트에서 직접 패키지를 참조하여 다른 버전을 선택합니다.
Project - System.IO.FileSystem 4.0.1 - runtime.win.System.IO.FileSystem 4.3.0 - System.IO.FileSystem.Primitives (>= 4.3.0)
프로젝트 -> System.IO.FileSystem 4.0.1 -> System.IO.FileSystem.Primitives (>= 4.0.1>)>>

문제

.NET Core 1.0 및 1.1과 함께 제공되는 패키지의 특정 조합은 .NET Core 3.0 이상 프로젝트에서 함께 참조되고 RuntimeIdentifier가 지정된 경우 서로 호환되지 않습니다. 문제가 있는 패키지는 일반적으로 4.0.0에서 4.3.1 사이의 버전 번호로 System. 시작하거나 Microsoft.갖습니다. 이 경우 다운그레이드 메시지에는 종속성 체인에서 시작하는 runtime.<RID> 패키지가 있습니다.

솔루션

이 문제를 해결하려면 다음 PackageReference를 추가합니다.

<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />

SDK의 version 주 버전과 일치하는 버전을 사용하도록 선택할 수 있습니다.

예제 4

검색된 패키지 다운그레이드: 2.1.8에서 2.1.0으로 Microsoft.NETCore.App. 프로젝트에서 직접 패키지를 참조하여 다른 버전을 선택합니다.
    test -> mvc -> Microsoft.NETCore.App (>= 2.1.8)
    test -> Microsoft.NETCore.App (>= 2.1.0)

문제

mvc 프로젝트는 궁극적으로 해결된 복원보다 더 높은 버전의 패키지에 대한 버전 제약 조건을 지정했습니다. 이는 직접 종속성 우선 규칙 때문입니다. 패키지를 확인할 때 그래프에서 직접 참조된 패키지의 버전은 동일한 ID로 먼 패키지의 버전을 재정의합니다.

솔루션

이 특정 오류(Microsoft.NETCore.App 패키지 포함)는 .NET Core SDK를 2.2.100 이상으로 이동하여 개선됩니다. Microsoft.NETCore.App 버전 3.0.100 이전의 .NET Core SDK가 자동으로 가져오도록 선택하는 자동 참조 패키지입니다. 또한 자체 포함 배포 런타임 롤 포워드를 참조 하세요.

참고 항목

NU1605는 NuGet 도구에서 경고로 간주되지만 . NET SDK 는 이 경고를 오류 WarningsAsErrors로 처리합니다. 프로젝트에서 .로 설정 TreatWarningsAsErrors 하여 이 경고를 오류로 업그레이드할 true수 있습니다. 권장하지는 않지만 런타임 문제가 발생할 가능성이 높으므로 이 경고를 표시하지 않도록 선택할 수 있습니다.

대체 솔루션: NuGetSolver는 종속성 충돌 해결을 지원하도록 설계된 Microsoft DevLabs에서 개발한 Visual Studio 확장입니다. 이러한 문제를 식별하고 해결하는 프로세스를 자동화합니다. 자세한 내용은 Visual Studio Marketplace의 NuGetSolver 페이지를 방문하여 사용자 환경에 대한 피드백을 듣고 싶습니다.