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

我正在创build我的第一个nuget包。 我添加了一个不是最新版本的版本的依赖。 但是,我不想更新到此依赖项的最新版本。 是否可以指示它使用特定的版本?

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

当我安装包时,我看到这个:

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

这会在安装包时创build以下内容。

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

我真的想看到这样的事情:试图解决依赖'NHibernate(3.2.0.3001)'。

你应该可以用括号强制一个确切的版本:

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

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

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

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

在这里输入图像说明

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

根据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),这意味着至less3.2.0.3002但低于3.3。