如何在nuspec中指定特定的依赖版本?

时间:2011-10-14 19:02:52

标签: c# .net nuget nuget-package

我正在创建我的第一个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)'。

4 个答案:

答案 0 :(得分:121)

您应该可以强制使用括号的确切版本:

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

您可以使用的格式的完整信息在NuGet网站上,这里:

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

答案 1 :(得分:15)

NuGet docs site,完整的符号:

enter image description here

答案 2 :(得分:2)

从用户端,您还可以通过在packages.config中指定allowedVersions来约束升级。 http://docs.nuget.org/docs/reference/versioning#Constraining_Upgrades_To_Allowed_Versions

答案 3 :(得分:2)

根据http://nuget.codeplex.com/wikipage?title=Dependency%20Resolution和其他来源,只需将下限指定为

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

将导致与该版本匹配的最低主要/次要版本的最高版本/补丁级别。

除非我完全误解了文档,否则这将匹配最高的3.2。*版本,但不符合3.3。*或更高版本,除非找不到3.2。*版本。

如果有一些原因导致3.2.0.3001是您希望依赖的唯一版本,您可能会发现您的软件包与其他依赖于NHibernate的软件包不兼容,例如因为其他软件包依赖于NHibernate [ 3.2.0.3002,3.3)这意味着至少3.2.0.3002但低于3.3。