我有一个OneClick程序,项目A,引用类库项目B.项目B有Json.net版本4.5.0.0升级到7.0.0.0。在构建项目A时,我收到错误消息:
No way to resolve conflict between "Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" and "Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed". Choosing "Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" arbitrarily.
Consider app.config remapping of assembly "Newtonsoft.Json, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" from Version "4.5.0.0" [C:\Program Files (x86)\Microsoft Visual Studio 12.0\Blend\Newtonsoft.Json.dll] to Version "7.0.0.0" [[projectpath]\Newtonsoft.Json.dll] to solve conflict and get rid of warning.
C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3276: Found conflicts between different versions of the same dependent assembly. Please set the "AutoGenerateBindingRedirects" property to true in the project file. For more information, see http://go.microsoft.com/fwlink/?LinkId=294190.
我已经清理了解决方案中的每个项目并重建了它们。我关闭/打开VS,重新开始,重建,同样的事情。手动删除了obj + bin文件夹,同样的事情。
我已将“设置/发布/应用程序文件”菜单更改为json.net的包含/排除的每个变体。
最后,我在全球范围内搜索了4.5.1.0的Sublime(VS并没有拿到所有内容),除了清单文件项目A创建的json.net引用之外几乎没有任何内容。我似乎无法找到对旧库的单一延迟引用,但它在构建时会一直显示在清单中。
我已经通过在.csproj的相关<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
中添加<PropertyGroup>
解决了我的问题,但我不确定它为什么会起作用。任何人都可以向我解释发生了什么事吗?这是解决这个问题的不好方法吗?