我正在创建我的第一个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)'。
答案 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,完整的符号:
答案 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。