packages.config
包含项目使用的所有包。 version
元素的package
属性需要包的exact version。
同时.nuspec
允许我设置range允许的依赖版本。
如果我的项目取决于A
和B
,而他们又依赖于C
,则NuGet会获取尽可能低的版本。因此,在依赖[1.0]
中指定确切版本之前,没有版本的硬件修复。然后我在网络中明确了<package>
元素中完全版本的要点。并且它没有>=
语义,因为如果不存在具有确切版本的包,则包还原将失败。
与此相反,最近推出的PackageReference将version
视为>=
。它甚至支持floating versions
答案 0 :(得分:1)
它们是不同的上下文,一个是包作者指定其包的依赖关系,另一个是用户对包版本的控制。
nuspec依赖版本基本上指定了您可以使用的依赖包的版本。 基本上你是说你的软件包只有在与依赖软件包的版本范围并排安装时才能工作。
另一方面,package的version属性中的值是用户控件。假设您有Package A版本1.0,这取决于Package B范围[1.0,2.0]。
在用户安装A-1.0的软件包配置中,它们也将获得B-1.0。 但是,如果用户选择,他们可以将软件包B更新为2.0,NuGet还原仍然有效。