10

基本冲突。

SignalR 想要 Newtonsoft.Json 版本 4.0.7 或更高版本,而 RavenDB 想要版本等于 4.0.5。这显然意味着它们不能并排安装。

因此,除了从其中一个下载源代码并在本地找出依赖关系然后必须签入由此创建的二进制文件之外,是否有一种可能的方法来保持使用 NuGet 管理依赖关系,并且可能只是转发 DLL 调用(就像 Mvc 对每个新版本所做的那样)?

4

2 回答 2

10

甚至还有更合适的方法来解决这个冲突。由于 .NET 为我们提供了重定向程序集的可能性,为什么不使用它;)

您可以在 App.config 中添加类似的内容(注意是否已经放置了 assemblyBinding):

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
         <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
         <bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.0.5.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

使用此重定向集,您可以简单地添加 RavenDB 包和 SignalR 包(它们中的每一个都引用 JSON.NET 的其他版本)并进行修复。

此外,我在 SignalR 上做了一个拉取请求,以请求对 4.0.5 版本中的 JSON.NET 的支持(因为它应该向后兼容)

于 2012-02-21T09:44:31.320 回答
3

几天前我们遇到了同样的问题,这是一个令人讨厌的问题。我们发现您无法使用 NuGet 管理依赖项。相反,我们已将 SignalR 更改为使用 4.0.5 并在本地编译它。

于 2012-02-20T23:47:46.613 回答