89

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

4 回答 4

137

您应该能够强制使用括号的精确版本:

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

有关您可以使用的格式的完整信息位于 NuGet 站点,这里是:

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

于 2011-10-15T10:49:13.920 回答
30

NuGet 文档站点,完整的符号:

在此处输入图像描述

于 2017-04-04T08:55:49.087 回答
2

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

于 2011-12-23T13:03:13.023 回答
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。

于 2014-08-29T08:44:09.977 回答