我正在玩我的mvc项目。
我在项目中创建了一个名为SocialAuth.Net的软件包,该软件包又使用Newtonsoft.Json.dll 4.0.0.0(旧版)作为其依赖项之一。
然后因为我自己也需要Json.Net,我想要一个更新的版本,So We 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, Version = 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>
所以,
我去了References,检查后发现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)链接起来,然后在构建时将旧的Json.Net(较新的4.5)链接起来。所以较旧的人会覆盖新的。
我不熟悉GAC安装,但知道我可以打开那些蠕虫并在那里安装2个版本,我不想这样做,因为这意味着我必须对我部署Web应用程序的每台机器都这样做。有没有办法玩web.config并解决这个问题?
答案 0 :(得分:0)
您可以尝试使用‑IgnoreDependencies
标志安装SocialAuth.Net软件包,然后手动安装依赖项并确保只安装最新版本的Json.Net库。
然后在运行时,SocialAuth.Net包将尊重程序集重定向并加载Json.Net(v4.5)而不是旧版本。