我最近将SharpMap添加到我的一个项目中。然后,同一解决方案中的另一个项目抛出:
An exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll but was not handled in user code
Additional information: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.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)
我寻找解决方案,发现如下:无法加载文件或程序集'Newtonsoft。Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'
但事实上这并不能解决问题:
Update-Package : Unable to resolve dependencies. 'Newtonsoft.Json 7.0.1' is not compatible with 'SharpMap 1.1.0 constraint: Newtonsoft.Json (= 4.5.11)'.
At line:1 char:16
+ Update-Package <<<< Newtonsoft.Json
+ CategoryInfo : NotSpecified: (:) [Update-Package], Exception
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand
关于可能与问题相关的项目结构的更多信息:
"Project A"是使用SharpMap的启动项目。"项目B"是失败的项目,"项目A"引用了"项目B"。
您需要添加对程序集Newtonsoft的特定版本的引用。要求的版本为4.5.11。您添加的版本是7.0。
由于SharpMap 1.1.0.0依赖于Newtonsoft。您应该使用包管理器控制台和以下命令
更新您的项目Update-Package Newtonsoft.Json -version 4.5.11
这将卸载当前版本的Newtonsoft。并将安装(旧)版本4.5.11
另一个解决方法是使用程序集版本重定向,通过在app.config
中添加以下内容<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
但是,只有当您确定SharpMap 1.1.0.0能够与新版本的Newtonsoft一起工作时,才应该使用此选项。Json