2012-02-07 58 views
4

我有一个叫做“Foo”的DLL项目,它引用了Newtonsoft.Json 4.0.7。 而我有第二个叫做“Bar”的DLL项目,引用“Foo”并且引用Newtonsoft.Json 4.0.5。由于各种原因,不可能改变两者的Newtonsoft.Json版本。如何为DLL项目做bindingRedirect以防止 - 警告MSB3247:发现冲突

当我编译,我得到的项目“吧”这样的警告:

警告MSB3247:不同版本的同一依赖程序集之间存在冲突。

所以我创建了一个的app.config项目 “酒吧”:

<dependentAssembly> 
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/> 
    <bindingRedirect oldVersion="0.0.0-4.0.7" newVersion="4.0.5"/> 
</dependentAssembly> 

但并未阻止警告。

现在有趣的一点是,当我将“Bar”项目从DLL更改为控制台时,警告消失。所以我想重定向只适用于可执行文件。

如何在我的方案中摆脱该警告?

回答

0

你想访问不同的NewtonSoft.Json DLL版本吗?不?从配置中删除块,一切工作正常。

+0

正如我所说,“酒吧”需要4.0.5和“Foo”需要4.0.7“Foo”是一个外部的,所以我不能改变它的绑定。“Bar”引用RavenDB需要4.0.5工作,配置块不会改变任何东西。 – lanwin 2012-02-07 19:32:05

0

可能会出现此错误的不同场合, 我收到消息MSB3247,并解决了将排除的DLL-Project重新加载到我的解决方案的问题。该项目有一个被排除的DLL的引用,但有DLL的前编译版本,可能导致了问题 - 无论如何现在它再次运行( - :
我希望它可以帮助