0

假设有一个项目依赖于xunit v 1.9.1包,其输出程序集发布为 nuget 包。现在,如果使用Install-Package命令安装包,则依赖的 xunit 包将安装为v1.9.2而不是 v1.9.1。

我无法在其他包中观察到这种情况。做这个案子有什么意义吗?

在这个问题上,nuget 版本是v2.7


[更新]

以下代码片段是我上面提到的测试项目的 nuspec 文件的一部分。

<dependencies>
  <dependency id="xunit" version="1.9.1" />
  <dependency id="Moq" version="4.0.10827"/>
</dependencies>

当我安装我的测试项目时,Moq 包安装为与上面指定的相同版本,但最近的 Moq 版本是v4.1.1308.2321,根据 semver,这不是重大更改。相反, xunit 软件包安装为最新的v 1.9.2

4

2 回答 2

1

这取决于包清单。如果您使用该pack命令检测来自 a 的依赖关系csproj,它将指定版本为 1.9.1。但是,NuGet 将此视为最低版本,而不是所需版本。

请参阅 http://docs.nuget.org/docs/reference/versioning#Specifying_Version_Ranges_in_.nuspec_Files

现在,因为新版本是 1.9.2,所以根据语义版本控制,它不被视为重大更改,因此可以安全安装。

http://semver.org/

另请注意这篇关于 NuGet 如何解析版本的博文。也就是说,它将安装指定主要和次要版本的最新补丁。

http://blog.davidebbo.com/2011/01/nuget-versioning-part-2-core-algorithm.html

于 2013-08-27T17:01:48.300 回答
0

您是否明确指定版本?如果没有,那么我对安装 1.9.2 一点也不感到惊讶,因为那是最新的,并且它向后兼容 1.9.1。

这是一般包管理系统的预期行为,如果您没有明确指定版本,它将尝试获取最新版本。

您可以在项目的参考条目中更改该行为(告知确切或最小版本号)。事情也可能取决于 nuget 包的元数据。

于 2013-08-27T16:54:23.120 回答