2014-04-30 3 views
6

그래서 NServiceBus> = 4.5.0에 따라 달라지는 NServiceBus.Host 패키지가 있습니다.NuGet이 패키지 종속성의 잘못된 버전을 해결합니다.

너겟에는 NServiceBus의 4.5.1 버전이 있습니다. 내가 설치 패키지 NServiceBus.Host 얻을 :

PM> install-package nservicebus.host 
Attempting to resolve dependency 'NServiceBus (≥ 4.5.0)'. 
Attempting to resolve dependency 'NServiceBus.Interfaces (≥ 4.5.0)'. 
Installing 'NServiceBus.Interfaces 4.5.0'. 
You are downloading NServiceBus.Interfaces from NServiceBus Ltd, the license agreement to which is available at http://particular.net/LicenseAgreement. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device. 
Successfully installed 'NServiceBus.Interfaces 4.5.0'. 
Installing 'NServiceBus 4.5.0'. 

내가 알기로는 종속성의 4.5.0 버전을 얻을.

nuget doco에서는 상태 : 종속성이 설치되어 있지

경우 NuGet 다음 단계를 간다 :

NuGet이 버전 사양 내에서 있어 사료 내 Subkismet의 모든 버전을 열거 . 그런 다음 NuGet은 가장 작은/최소 버전이있는 패키지를 으로 설정합니다. 나머지 패키지 중 NuGet은 가장 높은 버전 번호를 가진 패키지를 선택합니다.

"NuGet은 버전 번호가 가장 높은 것을 선택합니다." 결코 버전이 없기 때문에 여기 위반 된 것으로 보인다.

NuGet의 버그입니까?

+0

당신은 조금 놓친 : "나머지 패키지 *의 *는 NuGet이 가장 높은 버전의 하나를 선택합니다"- 더 높은 버전 번호가있을 수 있습니다 NuGet 저장소에 있지만 패키지 또는 종속성에서 참조하는 가장 높은 번호는 아닙니다. –

+0

그러나이 경우 4.5.0과 4.5.1이 모두 남아있는 패키지 세트에 포함되어야합니다. –

답변

9

당신이 참조 의존성 해상도의 NuGet 문서는 실제 NuGet 워드 프로세서를 사용할 여기에 있습니다 12월 2010 년 이후 업데이트되지 않은하기 : 또한 https://docs.nuget.org

, NuGet는 것 - 기본적으로 - 가장 낮은 MAJOR.MINOR 버전을 해결 허용되는 범위 내에서 패키지 종속성에 정의 된대로. 따라서 4.5.0은 올바른 기본 종속성 해결 방법입니다.

새로운 NuGet의 v2.8.1 이후 : 당신이 NuGet 패키지 관리자 콘솔을 사용하여 다른 의존성 해결 알고리즘 사용할 수 있습니다

설치 패키지 NServiceBus.Host -DependencyVersion HighestPatch

더있다 옵션을 확인하려면 여기에서 문서를 확인하십시오. https://docs.nuget.org/docs/reference/package-manager-console-powershell-reference#Install-Package

+0

감사합니다. HigestPatch가 향후 기본 전략이 될 것으로 기대합니까? –

+0

그들은 단지 codeplex 문서를 삭제합니까? –

+0

Powershell에서만 지정할 수 있습니까? 나는 일반 명령 프롬프트에서 옵션을 보지 못했다. –

3

Xavier가 언급 한 것처럼 기본 동작으로 보입니다. 그러나 설명서에는 너겟 구성을 편집하여 기본 동작을 변경할 수 있다고 나와 있습니다.

유효한 종속 패키지 목록에서 선택할 종속성 패키지의 버전을 지정합니다. defult 값은 최저입니다. 당신은 nuget.config 파일에 새 기본 값을 지정하여이 기본값을 재정의 할 수

%AppData%\Nuget\NuGet.Config 

그런 다음 PowerShell에서 작동 : 문서에 설명 된대로 내 설정 파일을 편집

<configuration> 
    <config> 
     <add key="DependencyVersion" value="HighestPatch" /> 
    </config> 
</configuration> 

그러나 일반 명령 프롬프트에서는 그렇지 않습니다.

워드 프로세서

는 말한다 :

어떤 이상한 것은 워드 프로세서는 2.7.2 이전의 기본이 HighestPatch 것을 말한다입니다 ...

참고 NuGet 2.7.2 또는 이전 버전 기본값은 HighestPatch이며 변경할 수 없습니다. 2.8의

릴리스 정보는 행동 및 패키지 지금은 시간이 지남에 따라 일관된 의존성 해상도의 결과가 설치 이유에 대한 변화를 언급. 당신의 끝에서 두 번째 단락 경우이 문서의 일부를 requoted 때

https://docs.nuget.org/docs/release-notes/nuget-2.8

관련 문제