【问题标题】:DLL's conflict after .NET framework upgrade (.NET 4.0 to .NET 4.5.1).NET 框架升级后 DLL 的冲突(.NET 4.0 到 .NET 4.5.1)
【发布时间】:2014-08-22 10:47:41
【问题描述】:

.NET 框架测试:

.NET 框架 4.5.1。

Visual Studio 测试对象:

VS Ultimate 2013。

说明:

我创建了一个返回哈希表作为输出的 WCF 服务,当我在类路径库项目中添加服务引用时,我获得了 ArrayOfKeyValueOfanyTypeanyTypeKeyValueOfanyTypeanyType 作为哈希表输出结果。

当我删除这些 DLL 并再次更新 WCF 服务时,我的类路径库项目引用了两个 DLL:DocumentFormat.OpenXml 和 Newtonsoft.Json,因此冲突得到解决,我获得了一个哈希表作为输出结果

如何获取Hashtable作为输出结果而不是ArrayOfKeyValueOfanyTypeanyTypeKeyValueOfanyTypeanyType?

【问题讨论】:

  • 如何获取Hashtable作为输出结果而不是ArrayOfKeyValueOfanyTypeanyTypeKeyValueOfanyTypeanyType?
  • 你是如何暴露和消费服务的?有代码吗?
  • Khmm,如果您的问题是“如何获取 Hashtable 作为输出结果而不是 ArrayOfKeyValueOfanyTypeanyTypeKeyValueOfanyTypeanyType”,那么它应该相应地命名。如果您的 4.0 项目产生了另一种类型,请询问为什么会这样以及可以做什么(询问前请阅读stackoverflow.com/questions/16657982/…)。
  • 我将类路径库项目升级到.NET 4.5.1时出现冲突。删除 DocumentFormat.OpenXml 和 Newtonsoft.Json DLL 后,我得到了 Hashtable 作为输出结果。

标签: c# wcf json.net


【解决方案1】:

您看到错误是因为您“在引用的程序集中重用类型”。生成器从 Newtosoft.Json dll 或 document.openxml dll 中选择类型。并在这些 dll 中的命名空间中添加一个 using。您可以通过在指定的引用程序集中选择重用类型来排除 theres dll,并包括您需要的那些。或者在Data Type下指定Dictionary集合类型和Collection类型。

【讨论】:

  • 我没有勾选“在引用的程序集中重用类型”,同样的问题发生了。
  • 您可以创建一个示例作为 WCF 项目,其中包含一个返回空 Hashtable 的服务,并尝试通过控制台应用程序调用它,但在您的客户端中,您应该包括 Newtonsoft.Json 或/和 DocumentFormat。 OpenXml 作为结果,您将获得 ArrayOfKeyValueOfanyTypeanyTypeKeyValueOfanyTypeanyType 而不是字典集合。
  • 当我从服务参考选项中排除 DocumentFormat.OpenXml 和 Newtonsoft.Json DLL 时,问题已解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多