首页 新闻 会员 周边

SignalR 引用Newtonsoft.Json源代码后报错,提示为:Could not load file or assembly 'Newtonsoft.Json

0
悬赏园豆:50 [已解决问题] 解决于 2014-05-06 08:43

问题是这样的:我在我的项目中使用了SignalR 组件。当我直接用NuGet将SignalR 所需的dll都引用进来,然后创建一个demo程序,该程序是可以正常运行的。

但是我引入了Newtonsoft.Json 对应版本的源代码,并将解决方案的依赖设置为Newtonsoft.Json的源代码项目。再次运行demo 程序就报下面的错误:

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)

鉴于以上错误,我做了如下尝试:

1.出现这样的报错后我通过设置web.config 中加入assemblyIdentity 也无济于事。

 <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="" culture="neutral" />
                <bindingRedirect oldVersion="3.0.0.0-5.65535.65535.65535" newVersion="5.0.1.16007" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
                <bindingRedirect oldVersion="3.0.0.0-5.65535.65535.65535" newVersion="5.0.1.16007" />
            </dependentAssembly>

2.又尝试将依赖重新设置为Newtonsoft.Json包中的Bin\Net40\Newtonsoft.Json.dll ,这样demo程序又是可以正常运行的。

 

各位,有哪位遇到过这个问题? 初步怀疑是Newtonsoft.Json 的签名引起的,但是解决方案的属性里看并没有设置签名选项。也曾怀疑是SignalR 里使用了强签名引起的。

但是如何解决这个问题呢?

各位给指点迷津。。。。

$克的主页 $克 | 菜鸟二级 | 园豆:217
提问于:2014-05-04 13:52
< >
分享
最佳答案
0

是引用没改,还是有地方是在引用dll.这也引了源码项目,没有问题的

收获园豆:50
吴瑞祥 | 高人七级 |园豆:29449 | 2014-05-04 14:40

谢谢。

但是,我这里只有一个测试项目。其他地方没有引用。见下图:

$克 | 园豆:217 (菜鸟二级) | 2014-05-04 14:44

@$克: 应该引用的其他DLL引用的Json.net有版本限制.你找下看是哪个DLL限制的,改一下看看

吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-04 15:05

@吴瑞祥: 谢谢!

如果说是其他DLL 引用造成的版本限制的话,只有可能是Microsoft.AspNet.SignalR.Core 造成的。但是引用Newtonsoft.Json 官方生成的DLL 就是好的。同一个源码包里的源代码再生成DLL就不行。

$克 | 园豆:217 (菜鸟二级) | 2014-05-04 15:11

@$克: 就跟你说的,DLL签名了应该,

吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-04 15:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册