我正在玩我的 mvc 项目。
我在项目中添加了一个名为 SocialAuth.Net 的包,该包又使用 Newtonsoft.Json.dll 4.0.0.0(旧)作为其依赖项之一。
然后因为我自己也需要 Json.Net,所以我想要一个更新的版本,所以我 Nugeted Json.NET,它有一个更新的版本 4.5.0.0(更新)。
然后问题发生了。在我的剃刀视图“ViewBag.Title = ....”它有红色下划线说:
警告 1 c:\users\admin\documents\visual studio 2010\Projects\WebApp\WebApp\Views\Home\Index.cshtml:ASP.NET 运行时错误:无法加载文件或程序集 'Newtonsoft.Json,版本 = 4.5。 0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
这是我的 web.config 的 Json 部分:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
所以,
我去参考,检查并发现 Newtonsoft.Json 是 4.0.0.0(可能是 SocialAuth.Net 附带的),我删除了它,并添加了我从 Nuget 获得的 4.5.0.0 参考。
我进入 WebApp/bin/debug/ 文件夹并删除了所有内容,然后重建了项目。
但是,一旦我重建了 webapp,Newton.Json 4.0.0.0 就会回到 bin/debug/ 中,无论我如何手动将它引用到新的 Nuget 4.5.0.0。同样的错误又回来了。我被困住了。
您是否知道如何处理此 dll 问题?谢谢你。
编辑 - - - - - - - - - - - - - - - - - -
经过一番思考,我明白这是因为首先链接了 Json.Net(较新的 4.5),然后在构建时较旧的链接在它之后。所以旧的会覆盖新的。
我不熟悉 GAC 安装,但知道我可以打开那个蠕虫罐并在那里安装 2 个版本,这是我不想这样做的,因为这意味着我必须对部署 Web 应用程序的每台机器都这样做。有没有办法使用 web.config 来解决这个问题?