安装自行创建的Nuget包将强制使用最新版本的依赖项,

安装自行创建的Nuget包将强制使用最新版本的依赖项,,nuget,Nuget,我已经为我们公司使用的库创建了一个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="[

我已经为我们公司使用的库创建了一个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中时,它表示需要结构映射>=2.6.2。到目前为止,一切顺利

问题是: 当我将这个库添加到我的项目中时,它总是安装StructureMap 2.6.3。为了做到这一点,它甚至从我的项目中卸载了2.6.2

我看不到任何迹象表明structure map 2.6.3是FluentNHibernate(或其任何依赖项)的依赖项,因此我完全不明白为什么它不会简单地将我的库添加到FluentNHibernate依赖项中,而将StructureMap 2.6.2放在一边

我不知道这是否与此有关,但我们将包托管在UNC共享上。

请阅读David Ebbo关于NuGet版本控制和依赖项解析的文章

简而言之,我们总是选择主版本和次版本最少、构建版本和修订版本最多的依赖项(基于依赖项的约束)。这样,当使用包作为依赖项时,您可以自动获得bug修复(不中断)。

请阅读David Ebbo关于NuGet版本控制和依赖项解析的文章


简而言之,我们总是选择主版本和次版本最少、构建版本和修订版本最多的依赖项(基于依赖项的约束)。这样,当使用包作为依赖项时,您可以自动获得bug修复(不中断)。

尝试仅使用
2.6.2
;看,不幸的是,这真的不起作用。该库的几个用户正在使用2.6.3。他们工作没有问题,只有我使用与库相同的结构图版本才有问题。尝试使用
2.6.2
;看,不幸的是,这真的不起作用。该库的几个用户正在使用2.6.3。他们的工作没有问题,只有我使用与库相同的结构图版本才有问题。我不必喜欢它,但很高兴知道一切都按预期进行。谢谢。顺便说一句,1.3==[1.3],所以你不需要[版本,)这是隐含的。如果它应该选择具有最高版本号的构建,那么它就被破坏了。案例和要点:安装MvcSiteMapProvider.MVC4。安装的MvcSiteMapProvider.Web版本始终是最早的补丁。在nuspec文件中它被指定为4.6.0,但它在新项目上安装了4.6.1,尽管如此4.6.18是可用的。我不必喜欢它,但很高兴知道一切都按预期进行。谢谢。顺便说一句,1.3==[1.3,),所以您不需要[版本,)这是隐含的。如果它应该选择具有最高版本号的构建,那么它就被破坏了。案例和要点:安装MvcSiteMapProvider.MVC4。安装的MvcSiteMapProvider.Web版本始终是最早的补丁。在nuspec文件中它被指定为4.6.0,但它在新项目上安装了4.6.1,尽管如此4.6.18可用。