Nuget .nuspec依赖项版本和packages.config包版本如何相互关联?

Nuget .nuspec依赖项版本和packages.config包版本如何相互关联?,nuget,Nuget,packages.config包含项目使用的所有包版本包的属性元素需要包的属性 同时,.nuspec允许我设置允许的依赖项版本的数量 如果我的项目依赖于A和B,而它们又都依赖于C,那么NuGet会获取尽可能低的版本。因此,在dependency[1.0]中指定确切的版本之前,不存在版本的硬修复。然后我就得到了在元素中有精确版本的要点。而且它并没有=语义,因为若不存在具有确切版本的包,则包还原将失败 与此相反,最近推出的将版本视为=。它甚至支持它们是不同的上下文,一个是包作者指定其包的依赖项,另一

packages.config
包含项目使用的所有包<代码>版本包的属性元素需要包的属性

同时,
.nuspec
允许我设置允许的依赖项版本的数量

如果我的项目依赖于
A
B
,而它们又都依赖于
C
,那么NuGet会获取尽可能低的版本。因此,在dependency
[1.0]
中指定确切的版本之前,不存在版本的硬修复。然后我就得到了在
元素中有精确版本的要点。而且它并没有
=
语义,因为若不存在具有确切版本的包,则包还原将失败


与此相反,最近推出的将
版本
视为
=
。它甚至支持

它们是不同的上下文,一个是包作者指定其包的依赖项,另一个是用户对包版本的控制

nuspec依赖版本基本上是指定可以使用的依赖包的版本。 基本上,您的意思是,您的包只有在与依赖包的该版本范围并排安装时才能工作

另一方面,包的version属性中的值是用户控件。假设您有包A版本1.0,这取决于包B的范围[1.0,2.0]

在包配置中,当用户安装A-1.0时,他们也将获得B-1.0。
如果用户选择,他们可以将包B更新为2.0,NuGet restore仍然可以工作

但是作为我自己包的作者,我同时也是依赖包的用户。我被迫在
packages.config
中指定它的确切版本,但可以在
.nuspec
文件中设置范围。确切地说,这就是它应该如何设置的。兼容版本与实际安装或解析的版本之间存在差异。从这个意义上讲,
PackageReference
更加一致。我声明浮动依赖项,如
3.*
nuget restore
为我带来了
3
发行版中的最新版本。如果遵循
SemVer
惯例,则不应出现破坏性更改。这是
nuspec
config
的一种统一,我不会称之为统一。nuspec是声明其自身依赖项的包。这是软件包的作者端。它是指导软件包应该如何使用,或者它需要什么才能正常工作。包引用是用户声明他想要得到的东西。NuGet试图做它认为对用户最有利的事情,但很容易陷入不同包的声明之间存在冲突的情况。所以NuGet有一个解决这些问题的策略: