首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.Net网站NuGet包依赖项

ASP.Net网站NuGet包依赖项
EN

Stack Overflow用户
提问于 2016-01-22 00:26:16
回答 2查看 216关注 0票数 0

使用2013 Pro:

下面是一个使用NuGet包的网站项目(而不是应用程序)的一个小难题:

包A取决于包Newtonsoft.Json

我安装了软件包A,它反过来安装它的依赖项: Newtonsoft.Json版本6.0.0

我测试我的网页,一切都很好,…

在Visual中,我执行以下操作:

Tools -> NuGet Package Manager ->管理解决方案…的NuGet包

单击“更新”,包管理器将显示Newtonsoft.Json的更新(到8.0.2版)。

当然,想要得到最新和最好的,我点击“更新”。

Newtonsoft.Json被下载并更新到8.0.2版

我再次测试我的网页,然后看到…

例外情况: System.IO.FileLoadException:无法加载文件或程序集“Newtonsoft.Json、Version=6.0.0.0、Culture=neutral、PublicKeyToken=30ad4fe6b2a6aeed”或其依赖项之一。所定位的程序集的清单定义与程序集引用不匹配。( HRESULT: 0x80131040除外)文件名:'Newtonsoft.Json,Version=6.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed‘

所以我的问题是:如何解决这个问题?…

我唯一能做到的就是(到目前为止),删除所有的软件包,重新安装软件包A,因为它需要6.0.0版的Newtonsoft.Json。

但是,如果我使用另一个NuGet包(比方说,包B),它依赖于不同版本的Newtonsoft.Json,该怎么办?换句话说,如果我使用任何其他具有相同依赖关系但版本不同的NuGet包,那么使用不存在特定依赖版本的包的页面最终会引发异常。

有没有办法绕过这种情况--或者如果我有多个依赖于Newtonsoft.Json的包--所有包都必须依赖同一个版本吗?

希望我说得够清楚了,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-22 00:32:17

如果更新是向后兼容的,则可以使用BindingRedirect:

代码语言:javascript
运行
复制
<dependentAssembly>
    <assemblyIdentity name="someAssembly" publicKeyToken="32ab4ba45e0a69a1" culture="en-us" />
    <bindingRedirect oldVersion="6.0.0.0" newVersion="8.0.2.0" />
  </dependentAssembly>

这显然只适用于向后兼容的升级,如果API发生变化,您就有麻烦了。有关BindingRedirects的更多信息可以在这里找到:

https://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.110).aspx

票数 0
EN

Stack Overflow用户

发布于 2016-01-22 02:59:32

这是一个常见的问题,就像肯尼斯说的,如果它支持向后兼容性,它应该与"bindingRedirect“一起工作。

“我唯一能做到的方法就是(到目前为止),移除所有软件包并重新安装软件包.”

对于要更新Nuget而不删除dll的问题,可以安装Nuget的特定版本。

VS -> Tools -> Nuget Package Manager -> Package Manager控制台并运行以下命令

安装-软件包Newtonsoft.Json -Version 6.0.1

您可以在此页面中看到Newtonsoft版本的历史记录,并选择所需的版本。

这将降低/升级现有的软件包。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34936945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档