我为我们公司使用的库创建了一个nuget包。该库使用Fluent NHibernate 1.3.0.717和Structure Map 2.6.2。
因为有些人正在使用StructureMap 2.6.3,所以我创建了包的依赖关系:
<dependencies>
<dependency id="FluentNHibernate" version="[1.3,)" />
<dependency id="structuremap" version="[2.6.2,)" />
</dependencies>
当包装出现在NuGet中时,它表示需要结构图&gt; = 2.6.2。到目前为止,非常好。
这是问题所在: 当我将这个库添加到我的项目时,它总是安装Structure Map 2.6.3。它甚至可以从我的项目中卸载2.6.2。
我没有看到任何迹象表明结构图2.6.3是FluentNHibernate(或其任何依赖项)的依赖项,所以我完全不知道为什么它不会简单地添加我的库与FluentNHibernate依赖项并留下我的仅结构图2.6.2。
我不知道这是否与它有任何关系,但我们将这些包托管在UNC分享上。
答案 0 :(得分:1)
阅读David Ebbo关于NuGet版本控制和依赖性解析的blog series。
简而言之,我们总是选择具有最低主要和次要以及最高版本和修订版号的依赖项(基于依赖项的约束)。这样可以在将包用作依赖项时自动获得错误修复(非破坏)。