我正在创建一个插件来调用Web服务。我需要序列化和反序列化Json对象。所以,我需要Newtonsoft.Json。我正在尝试在Visual Studio 2015中使用ILMerge.MSBuild.Task和ILMerge合并NewtonSoft.Json的dll和我的应用程序dll。
我在互联网上寻找解决方案,但找不到任何解决方案。
答案 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来获取该项目的更新的事实,但至少可以正常工作。