3

我正在尝试使用 NuGet 将 SignalR 和 Raven 添加到新的 ASP.Net MVC 4 项目中。

如果我先做 SignalR,然后尝试添加 Raven,我会收到以下错误:

安装失败。回滚... 安装包:已经引用了较新版本的“Newtonsoft.Json”。

如果我先安装 Raven,然后 SignalR 我得到:

安装失败。回滚...安装包:将“Newtonsoft.Json 4.5.7”更新为“Newtonsoft.Json 4.5.8”失败。找不到与“Newtonsoft.Json 4.5.8”兼容的“RavenDB.Client”版本。

我以为 NuGet 是用来处理这类事情的?

我怎样才能同时添加它们?

4

4 回答 4

3

似乎 RavenDB.Client 对 Newtonsoft.Json = 4.5.7 有一个确切的版本约束,而 SignalR 有一个更宽松的“4.5.4 或更高”约束(实际上是由它自己的依赖项之一 SignalR 施加的约束。服务器)。

我设法通过一些手动调整使您的上述方案工作:

  1. 创建新的 MVC4 项目
  2. 打开 packages.config 并向Newtonsoft.Json 包条目添加了一个 ' allowedVersions="[4.5.7]" ' 属性
  3. 打开包管理器控制台(查看...其他窗口...包管理器控制台)并运行update-packages以获取所有默认依赖项的最新代码(需要一段时间)
  4. 再次在包管理器控制台中,运行install-package RavenDB.Client
  5. 最后在包管理器控制台中,运行install-package SignalR

我尝试了一些上述排序的组合,但它不喜欢它 - 让它工作的东西似乎是手动编辑 packages.config 以将 Newtonsoft.Json 的版本锁定为 4.5.7,以便后续安装不要不要丢弃引用的版本。

于 2012-08-28T12:25:44.860 回答
1

我们遇到了这个确切的问题,但最终手动拉入了 Raven 程序集(因此我们可以针对特定版本)。

我们遇到的是可以强制 Nuget 使用命令行工具安装包: 如何通过 NuGet 安装旧版本的包?

于 2012-09-18T21:23:31.337 回答
0

我遇到了同样的问题,但决定安装旧版本的 SignalR。4.0 版(2012 年 2 月)依赖于 NewtonSoft >= 4.0.7,并且在 RavenDB 已安装的情况下正确安装:

Install-Package SignalR -Version 0.4.0 
于 2012-11-16T11:03:37.443 回答
0

我在使用 Raven 和标准 MVC 模板时遇到了同样的问题。我想要最新版本的 Newtonsoft.Json,所以我以不同的方式解决了它。我检查了 RavenDB 客户端有哪些依赖项,然后首先安装了它们的最新版本 Newtonsoft.Json 和 NLog 然后我在数据包管理器控制台中使用 -IgnoreDependencies 标志安装了数据包。

Install-Package -Id RavenDB.Client -IgnoreDependencies 

那工作得很好。(我冒着风险,RavenDB 目前与最新的 Newtonsoft.Json 不兼容。但我是一个夜魔侠)

于 2012-12-29T18:14:15.483 回答