Nuspec에서 특정 종속성 버전을 지정하는 방법은 무엇입니까?


81

첫 번째 너겟 패키지를 만들고 있습니다. 최신 버전이 아닌 버전으로 종속성을 추가했습니다. 그러나이 종속성의 최신 버전으로 업데이트하고 싶지 않습니다. 특정 버전을 사용하도록 지시 할 수 있습니까?

<dependencies>
  <dependency id="NHibernate" version="3.2.0.3001" />
</dependencies>

패키지를 설치하면 다음과 같이 표시됩니다.

Attempting to resolve dependency 'NHibernate (≥ 3.2.0.3001)'.

패키지를 설치할 때 다음이 생성됩니다.

<packages>
  <package id="Iesi.Collections" version="3.2.0.4000" />
  <package id="NHibernate" version="3.2.0.4000" />
</packages>

나는 정말로 다음과 같은 것을보고 싶습니다 : 종속성 'NHibernate (3.2.0.3001)'를 해결하려고 시도합니다.


5
아래 답변에 따라이 작업을 수행 할 수 있습니다. 그러나 패키지를 사용하고 NHibernate (또는 정확한 패키지 버전을 지정한 다른 종속성)를 사용하는 사람은 사용자가 허용하지 않는 한 어떤 이유로 든이를 업데이트 할 수 없습니다. 이것은 나쁜 상태입니다. "잠긴 버전"은 최근에 우리를 물었습니다. 우리의 경우 버전 잠금 패키지는 NHib가 아니라 관련없는 패키지였습니다. 업스트림 라이브러리에 진정한 주요 변경 사항이있는 경우 잠금 버전이 필요할 수 있지만 우리의 경우에는 없었습니다. 이 구문의 남용. 따라서 사용하는 경우주의해서 사용하십시오!
Anthony

답변:


129

대괄호를 사용하여 정확한 버전을 강제 할 수 있어야합니다.

<dependency id="NHibernate" version="[3.2.0.3001]" />

사용할 수있는 형식에 대한 전체 정보는 NuGet 사이트에 있습니다.

http://docs.nuget.org/docs/reference/version-range-specification


어떻게 그 페이지를 찾지 못했는지 모르겠습니다! 감사.
devlife

1
할 수 있습니다. 그러나 당신의 패키지를 사용하고 NHibernate를 사용하는 사람은 당신이 허락하지 않는 한 어떤 이유로 든 NHibernate를 업데이트 할 수 없다는 것을 명심하십시오. 이것은 좋은 상황이 아닙니다.
안토니

2
@Anthony 나는이 의견이 내 대답에 대한 질문에 더 낫다고 생각합니다. 나는 그것을 옹호하는 것이 아니라 그것을하는 방법을 보여주고 있었다. 하지만 설명하는 문제는 쉽게 해결되지 않습니다. 동일한 버전의 NH에서 작동하지 않는 코드가 두 개 많다면 (버그, API 차이 등으로 인해) 이미 실수 한 것입니다. 실제 수정 민간 의존성 (노드가이 같은),하지만 난 .NET 이제까지 :( 그것에 대해 "적절한"지원을 받고 볼 수 없습니다
대니 Tuppeny

1
예, 동의하며 댓글을 다시 첨부하겠습니다. 명확하게 말하면, "잠긴 버전"이 최근에 우리를 물었 기 때문에 내 마음에 신선합니다. 우리의 경우 버전 잠금 패키지는 NHib가 아니라 완전히 관련없는 패키지였습니다. 라이브러리에 진정한 주요 변경 사항이있는 경우 잠금 버전이 필요할 수 있지만 우리의 경우에는 없었습니다. 이 구문의 남용. 따라서주의해서 사용하십시오!
Anthony



2

http://nuget.codeplex.com/wikipage?title=Dependency%20Resolution 및 기타 소스 에 따르면 단순히 하한을 다음과 같이 지정합니다.

<dependencies>
  <dependency id="NHibernate" version="3.2.0.3001" />
</dependencies>

그러면 해당 버전과 일치하는 가장 낮은 주 / 부 버전의 가장 높은 개정 / 패치 수준이 생성됩니다.

설명서를 완전히 오해하지 않는 한, 3.2. * 버전을 찾을 수없는 경우 가장 높은 3.2. * 버전과 일치하지만 3.3. * 이상 버전과 일치하지 않습니다.

3.2.0.3001이 의존하고 싶은 유일한 버전 인 이유가 있다면, 예를 들어 다른 패키지가 NHibernate에 의존하기 때문에 귀하의 패키지가 NHibernate에 의존하는 다른 패키지와 호환되지 않는다는 것을 알 수 있습니다. [3.2.0.3002 , 3.3) 이는 3.2.0.3002 이상 3.3 미만을 의미합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.