2014-01-16 3 views
2

근무중인 팀은 공개 패키지 용 NuGet.org 및 내부 패키지 용 파일 서버의 폴더라는 두 개의 NuGet 피드를 사용합니다.NuGet의 패키지 의존성 해결 및 명명 충돌

이것은 우리에게는 잘 작동했지만 잠재적 인 문제가 있다고 생각합니다. NuGet은 패키지 이름과 버전 번호에 따라 의존성을 해결합니다. 재생중인 피드가 하나 뿐이므로 문제가되지 않습니다. 둘 이상의 피드가 있으면 이름 충돌의 위험이 있습니다. NuGet의 해상도 규칙에 따르면 피드에 관계없이 가장 높은 버전 번호를 선택하는 것처럼 보입니다.

이렇게하면 약간의 문제가 발생합니다. 일어날 가능성은 없지만 내부 피드에있는 패키지 이름과 동일한 패키지 이름을 가진 패키지를 NuGet.org 피드에 게시하는 경우 예상치 못한 패키지가 포함될 수 있습니다.

1) 우리는 우리의 개인 사료에 의존 패키지를 당겨 :

나는이 문제를 해결하는 방법은 두 가지로 생각할 수 있습니다. 이것이 가능할지라도 패키지 업데이트를 우리의 개인 피드에 지속적으로 다운로드해야하는 관리상의 부담 때문에 대단히 매력적이지 않습니다.

2) NuGet.org 피드를 통해 자리 표시 자 패키지를 게시하여 패키지 이름을 예약하십시오. 이것은 작동하는 것처럼 보이지만 나에게 해킹처럼 느껴집니다.

더 좋은 방법이 있습니까?

도움 주셔서 감사합니다.

답변

2

Google 제품 ProGet (본질적으로 추가 기능이있는 개인 NuGet 저장소)을 사용하면 매우 쉽게 수행 할 수 있습니다. 단, 이렇게하는 기능은 유료 버전에서만 사용할 수 있습니다. 본질적으로 당신이해야 할 일은 Visual Studio 내에서 ProGet 호스트 피드에 대한 것입니다. 기본적으로 ProGet 피드는 공식 NuGet.org 피드에 연결되어 있으며 공식 피드의 모든 패키지를 다운로드 할 수 있습니다. 당신의 "커넥터 필터"를 설정한다면

그러나 :

* 
!YourPackageNameOrPrefix 

를 다음 공식 공급에서 다운로드되는 당신과 같은 이름의 패키지를 차단하는 것입니다.

타사 솔루션에 관심이 없다면 복사 할 가능성이 거의없는 패키지 (예 : YourCompany.XXXXX)를 사용하여 패키지 이름을 지정할 수는 있지만 누구나 패키지를 복사 할 수 있습니다 고의로.

+0

고마워요! 제품 제안과 방법론 모두 정말 도움이됩니다! – Jacob