加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 引用不同版本的Json.NET DLL

发布时间:2020-12-16 07:39:54 所属栏目:asp.Net 来源:网络整理
导读:我正在玩我的mvc项目. 我将一个名为SocialAuth.Net的软件包编入该项目,该项目又使用Newtonsoft.Json.dll 4.0.0.0(较旧版本)作为其依赖项之一. 然后因为我自己也需要Json.Net,我想要一个更新的版本,所以我Nugeted Json.NET,它有一个更新的版本4.5.0.0(更新).
我正在玩我的mvc项目.

>我将一个名为SocialAuth.Net的软件包编入该项目,该项目又使用Newtonsoft.Json.dll 4.0.0.0(较旧版本)作为其依赖项之一.
>然后因为我自己也需要Json.Net,我想要一个更新的版本,所以我Nugeted Json.NET,它有一个更新的版本4.5.0.0(更新).

然后问题发生了.在我的剃刀视图“ViewBag.Title = ….”中有红色下划线说:

Warning 1 c:usersadmindocumentsvisual studio
2010ProjectsWebAppWebAppViewsHomeIndex.cshtml: ASP.NET runtime
error: Could not load file or assembly ‘Newtonsoft.Json,
Version=4.5.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed’ or
one of its dependencies. The located assembly’s manifest definition
does not match the assembly reference. (Exception from 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链接到它之后.所以较旧的人会覆盖较新的那个.

我不熟悉GAC安装,但知道我可以打开那些蠕虫并在那里安装2个版本,我不想这样做,因为这意味着我必须对我部署Web应用程序的每台机器都这样做.有没有办法玩web.config并解决这个问题?

解决方法

您可以尝试使用 ?IgnoreDependencies标志安装SocialAuth.Net软件包,然后手动安装依赖项并确保只安装最新版本的Json.Net库.

然后在运行时,SocialAuth.Net包将尊重程序集重定向并加载Json.Net(v4.5)而不是旧版本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读