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

我正在制作我的第一个蛋蛋套装。我添加了一个非最新版本的依赖项。但是,我不想更新到这个依赖项的最新版本。有没有可能指示它使用特定的版本?

<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)’。

57352 次浏览

You should be able to force an exact version with brackets:

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

Full info on the formats you can use are on the NuGet site, here:

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

From the user side, you can also constrain the upgrade by specifying allowedVersions in the packages.config. http://docs.nuget.org/docs/reference/versioning#Constraining_Upgrades_To_Allowed_Versions

According to http://nuget.codeplex.com/wikipage?title=Dependency%20Resolution and other sources, simply specifying the lower bound as

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

will result in the highest revision/patch level of the lowest major/minor version matching that version.

Unless I completely misunderstand the documentation, this would match the highest 3.2.* version but not 3.3.* or greater versions unless no 3.2.* version could be found.

If there is some reason why 3.2.0.3001 is the only version against which you wish to depend, you may find that your package is not compatible with other packages which also depend on NHibernate for example because the other package depends on NHibernate [3.2.0.3002,3.3) which means at least 3.2.0.3002 but lower than 3.3.

From the NuGet docs site, the complete notations:

enter image description here