2017-05-09 14 views
0

이 질문은 현재 가설 적이지만 실제 근거가 있습니다.타사 너겟 패키지의 종속성을 어떻게 바꿉니 까?

NuGet 패키지 A는 공급 업체 Y에 의해 NuGet 패키지 B와 Microsoft에 의해 System.Runtime에 종속됩니다.

우리는 B가 수정하지 않으려는 버그를 수정하기 위해 B (오픈 소스)를 B '로 분기해야한다는 것을 알았습니다. B '에 대한 몇 가지 버전이 있다고 가정 해 봅시다 (이것은 결국 사실 일 것입니다).

프로젝트 Q는 A와 B '에 따라 다릅니다.

어떻게하면 너겟이 완전히 혼란스럽지 않게 할 수 있습니까? 나는 nuget 캐시 디렉토리를 만들기위한 스크립트를 가지고 있지만, 누겟 복원을 실행하고 올바른 대답을 얻을 수 있다면 훨씬 더 의미가 있습니다.

이론적으로 우리는 B '를 nuget.org에 게시 할 수 있다고 말할 수는 있지만 업로드가되지 않도록 B가 진행 중입니다. X가 Y의 B 대신 B '를 사용하도록 설득 할 기회가 없으며 X는 닫힌 소스이므로 다시 컴파일 할 수 없습니다.

+0

패키지 ID도 변경 했습니까? 그렇지 않다면 소비 프로젝트에서 정확한 버전을 지정할 수 있습니다 (예 :'2.1.9-internalally-fixed'). 그리고 다운 그레이드 경고로 살고 있습니다. –

+0

(내부 피드 또는 디렉토리 패키지 소스에서 사용 가능해야 함) –

+0

@MartinUllrich : 저도 그렇게 할 수 있습니다. 모든 것을 쓰면 나는 그런 대답을 받아 들일 수있다. 지금은 조각이 빠졌지 만 할 일이 무엇인지 상상할 수 있습니다. – Joshua

답변

0

패키지 ID를 변경하면 패키지 종속성을 재정의 할 수 없습니다. 가능한 경우 사용자 지정 버전을 만들 수 있습니다. NuGet은 SemVer 시험판 버전을 지원하므로 동일한 ID를 가진 패키지를 2.1.9-internally-fixed 버전의 개인 피드에 푸시 할 수 있습니다 (고정 버전 종속성을 나타 내기 위해 [] 대괄호 추가). 모든 최상위 프로젝트를이 버전에 의존하게 만들면 다른 종속성을 덮어 씁니다. 패키지가 2.1.9에 의존하면 다운 그레이드 경고가 발생할 수 있습니다.

+0

이 답변이 효과가 있다고 밝혀졌습니다. – Joshua

+0

그래서 nuget은 2.1.9 - 내부적으로 컴파일 타임에 고정되었지만 어쨌든 dotnet 빌드는 2.1.9로 패키지되었습니다. – Joshua

+0

NuGet을 사용하여 버전을 사용하셨습니까? csproj 파일의 HintPath 요소를 확인하여 빌드에서 실제로 사용되는 파일을 확인하십시오. 'packages' 디렉토리를 삭제하면 NuGet이 올바른 버전을 복원하는지 확인할 수 있습니다. –