[英]Json.NET initialization throws System.TypeLoadException
我有兩個部分的解決方案:
A
)。 B
)的PCL庫。 只要B
使用並引用Json.NET
(作為NuGet包),一切就可以正常工作。 但是,一旦我添加了對A
相同的NuGet包的引用,我就會得到:
System.TypeLoadException: Could not load type 'Newtonsoft.Json.SerializationBinder' ...
我跟蹤了由NuGet引起的問題,其中包括兩個不同版本的Json.NET
程序集:
A
使用的文件的文件描述設置為Json.NET B
使用的文件的文件描述設置為Json.NET Portable 顯然,一個組件不能被另一個替換。 我的PCL找不到所需的版本,因此是例外。
如何配置NuGet,以便兩個項目都引用相同的Json.NET
可移植版本?
我找到了一種解決方法,以確保B
和A
引用相同的Json.NET Portable程序集。
默認情況下,NuGet將<HintPath>
配置為設置為庫的net45
版本:
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.6.0.6\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
這是這場沖突的根源。 因此,將A.csproj
文件編輯為此:
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.6.0.6\lib\portable-net45+wp80+win8+wpa81+aspnetcore50\Newtonsoft.Json.dll</HintPath>
</Reference>
正確安裝后, A
和B
將使用完全相同的組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.