RavenDb最新版本作为nuget包安装。它引用了Newtonsoft.Json 4.0.2。 我正在尝试安装TweetSharp。我得到这个日志:
M> Install-Package TweetSharp
Attempting to resolve dependency 'Hammock (≥ 1.2.3)'.
Attempting to resolve dependency 'Newtonsoft.Json (≥ 4.0.1)'.
Successfully installed 'Hammock 1.2.6'.
Successfully installed 'Newtonsoft.Json 4.0.3'.
Successfully installed 'TweetSharp 2.0.8'.
Install failed. Rolling back...
Install-Package : Updating 'Newtonsoft.Json 4.0.2' to 'Newtonsoft.Json 4.0.3'
failed. Unable to find a version of 'RavenDB-Embedded' that is compatible with
'Newtonsoft.Json 4.0.3'.
如您所见,即使TweetSharp只需要'Newtonsoft.Json(≥4.0.1)',nuget也想安装无法与RavenDb一起使用的4.0.3版本。
我尝试安装以前版本的TweetSharp,但它不会改变任何内容。
有什么方法可以绕过这个?
答案 0 :(得分:1)
听起来像NuGet中可能存在的错误。请在NuGet错误跟踪器中记录一个问题:http://nuget.codeplex.com/workitem/list/basic
如果TweetSharp适用于NewtonSoft.Json 4.0.2,则安装不应该失败。在您的错误中,您可以发布导致此问题的确切版本。例如:
已安装确切版本的已安装软件包列表。 每个程序包的依赖项列表以及它们指定的特定版本范围。 您正在尝试安装的TweetSharp的确切版本。这将帮助我们更快地看待这个问题。谢谢!
我的猜测是我们有一些默认逻辑尝试将软件包升级到最新的错误修复版本。在这种情况下,我们尝试了,但它导致另一个依赖失败。在这种情况下,我们应该知道并且没有尝试升级。
答案 1 :(得分:1)
这取决于NuGet之后的语义版本(我认为)1.6。它更详细地解释了here,但基本的想法是,如果您的依赖关系没有更新主要版本号或次要版本号,那么他们会认为它是“sa”错误修正,而不是一个重大变化。
因此,在这种情况下,决定安装4.0.3而不是4.0.1。
您可以使用-ignoredependencies运行install-package我会认为如果您安装了4.0.2,它将不会尝试更新您(因为4.0.2满足依赖性)。