nuspecで特定の依存関係バージョンを指定するにはどうすればよいですか?


83

最初のnugetパッケージを作成しています。最新バージョンではないバージョンの依存関係を追加しました。ただし、この依存関係の最新バージョンに更新したくありません。特定のバージョンを使用するように指示することはできますか?

<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ではなく、無関係のパッケージでした。アップストリームライブラリに本物の重大な変更がある場合は、バージョンのロックが必要になることがありますが、私たちの場合はそうではありませんでした。この構文を使いすぎるだけです。したがって、使用する場合は注意して使用してください。
アンソニー

回答:


131

角かっこで正確なバージョンを強制できるはずです。

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

使用できる形式の詳細については、NuGetサイトをご覧ください。

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


そのページを見つけられなかった理由がわかりません。ありがとう。
devlife 2011年

1
あなたはこれを行うことができます。ただし、パッケージを使用し、NHibernateも使用している人は、許可しない限り、何らかの理由でNHibernateを更新できないことに注意してください。これは素晴らしい状況ではありません。
アンソニー

3
@Anthonyこのコメントは、私の答えよりも優れていると思います。私はそれを主張するのではなく、それを行う方法を示しているだけでした。ただし、説明する問題は簡単には解決できません。同じバージョンのNHでは機能しないコードが2つある場合(バグ、APIの違いなどが原因で)、すでに問題が発生しています。本当の修正は(Nodeが持っているように)プライベートな依存関係ですが、.NETがそのための「適切な」サポートを取得することはありません:(
Danny Tuppeny 2015年

1
はい、同意します。コメントを再度添付します。明確にするために、「ロックされたバージョン」は最近私たちを噛んだので、それは私の心の中で新鮮です。私たちの場合、バージョンロックされたパッケージはNHibではなく、完全に無関係なパッケージでした。ライブラリに本物の重大な変更がある場合は、バージョンのロックが必要になることがありますが、私たちの場合はそうではありませんでした。この構文を使いすぎるだけです。したがって、注意して使用してください。
アンソニー



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.