合并Newtonsoft.Json

时间:2018-12-03 22:29:06

标签: plugins json.net dynamics-crm dynamics-365 ilmerge

我正在创建一个插件来调用Web服务。我需要序列化和反序列化Json对象。所以,我需要Newtonsoft.Json。我正在尝试在Visual Studio 2015中使用ILMerge.MSBuild.Task和ILMerge合并NewtonSoft.Json的dll和我的应用程序dll。

我收到以下错误: enter image description here

我在互联网上寻找解决方案,但找不到任何解决方案。

3 个答案:

答案 0 :(得分:3)

对于Visual Studio中的ILMerge,仅使用NuGet软件包管理器中的必需dlls

我正在使用 MSBuild.ILMerge.Task 1.0.5 Newtonsoft.Json 的最新版本,并且遇到了此类问题。

我尝试将其降级到 Newtonsoft.Json 10.0.3 版本,从而达到了稳定的版本。

希望这会有所帮助!

答案 1 :(得分:1)

如果您仅使用ILMerge来序列化/反序列化JSON,建议您删除它并使用DataContractJsonSerializer类。此更改将消除对Newtonsoft.Json和ILMerge(not supported)的依赖,最终得到一个更轻便的插件库(这总是很好的):

// Deserialize a JSON stream to a User object.  
public static User ReadToObject(string json)  
{  
    User deserializedUser = new User();  
    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));  
    DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedUser.GetType());  
    deserializedUser = ser.ReadObject(ms) as User;  
    ms.Close();  
    return deserializedUser;  
} 

完整示例可见here

答案 2 :(得分:0)

我能够通过从nuget中获取最新的dll来解决此问题,只需将其放入侧面文件夹并直接引用该dll。

我不确定为什么nuget搞砸了,但是在我把nuget从图片中拿出来之后,构建就可以了。

我不喜欢不能使用nuget来获取该项目的更新的事实,但至少可以正常工作。