【问题标题】:Visual Studio 2012 Error Reference.svcmap throwing ErrorVisual Studio 2012 错误参考.svcmap 抛出错误
【发布时间】:2012-06-22 04:48:24
【问题描述】:

从昨天开始使用 Visual Studio 2012 RC,我们有一个 WCF 解决方案。每当我尝试在另一个解决方案中使用“添加/删除引用”对话框时,添加服务后都会出现以下错误。

错误 1 ​​Reference.svcmap:无法为服务生成代码 参考“DPService”。无法导入 wsdl:portType 详细信息:An 运行 WSDL 导入扩展时引发异常: System.ServiceModel.Description.DataContractSerializerMessageContractImporter 错误:类型“WebSupergoo.ABCpdf8.Objects.Bookmark”是递归的 不支持的收集数据合同。考虑修改 集合 'WebSupergoo.ABCpdf8.Objects.Bookmark' 的定义 删除对自身的引用。错误源的 XPath: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IGQDynamicPackaging'] 无法导入 wsdl:绑定详细信息:导入一个错误 wsdl:binding 所依赖的 wsdl:portType。 XPath 到 wsdl:端口类型: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IGQDynamicPackaging'] 错误源的 XPath: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpContextBinding_IGQDynamicPackaging'] 无法导入 wsdl:port 详细信息:导入一个错误 wsdl:port 所依赖的 wsdl:binding。 XPath 到 wsdl:绑定: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpContextBinding_IGQDynamicPackaging'] 错误源的 XPath: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='GQService']/wsdl:port[@name='WSHttpContextBinding_IGQDynamicPackaging'] App_WebReferences/DPService/

请注意:当我使用 VS 2010 时,上述服务工作正常。供您参考,我们正在使用“在引用的程序集中重用类型”打开并选中“在所有引用的程序集中重用类型”选项。

相同的设置在 VS 2010 上运行正常,我们可以添加参考。但是现在,在安装 VS 2012 RC 之后,我无法为 VS 2010 和 VS2012 添加参考。任何解决方案或解决此问题。

我只是想回滚想用VS2010,“添加服务”现在在VS 2010中给出同样的引用错误。

【问题讨论】:

  • 我也有同样的问题,有更新吗?
  • 我正在卸载 vs 2012 并将卸载 .net 4.5,您是否尝试这样做?有用吗?
  • 您好 MSS,我们还没有尝试卸载它。卸载后是否成功?感谢您对此的意见。
  • 已卸载,但 vs 2010 已损坏,重新安装 vs 2010(已修复)并尝试查看发生了什么!!!
  • 耶啊啊啊啊啊啊,现在好了!

标签: wcf visual-studio-2012


【解决方案1】:

我遇到了类似的问题,我在“配置服务引用”对话框中取消选中“在引用的程序集中重用类型”复选框。

1) 右键单击​​服务参考 2) 选择配置服务参考 3)取消选中“在引用的程序集中重用类型”

我不确定这样做的所有后果,但它让我能够再次使用参考。

【讨论】:

  • 在我们的例子中,我们需要使用“引用程序集”选项,因为我们有单独的程序集,它们在 wcf 和 web 之间共享类型。值得注意的是,我们已经使用参考程序集进行了大量编码。将它们全部改回以引用生成的代理真是一场噩梦
  • 后果是您不重用类型,它会为每个模型对象生成一组新的类。如果他们是 pocos 很好,但如果你说验证在客户端和服务器之间共享,那就糟糕了。奇怪的是,一个用户正在安装 sp1,事情变得很有趣。这以某种方式影响了我的机器......取消重复使用,更新然后重新打开它,一切都恢复正常。
  • 这对我也“有效”,但我不应该仅仅因为 VS 2012 坏了就在 VS 2010 中进行此更改。有没有办法真正解决这个问题?
  • 在 VS2012 中不要取消选中整个“在引用的程序集中重用类型”,而只是取消选中任何不是 core-microsoft 的内容。
  • 这样做的问题是所有服务方法参数都具有服务的命名空间 - 不是说共享命名空间。因此,如果您传递的对象可能与参数命名空间不匹配。还会产生大量“模棱两可”的参考错误。
【解决方案2】:

您的项目引用的两个程序集中似乎已经定义了“CustomerServiceReference”。代码生成器不知道应该使用哪一个。

要摆脱这个问题,就像拉斯所说的那样。您可以配置您的服务引用,在其高级选项选项卡中,您可以禁用“在所有引用的程序集中重用类型”,(通过选择“在指定的引用程序集中重用类型”)。您可以选择除导致此问题的程序集之外的所有程序集(它将 CustomerServiceReference 定义为错误消息所述。)

【讨论】:

    【解决方案3】:

    卸载vs 2012,vs 2010会给你“未知错误”,一个小错误信息,修复vs 2010(重新安装),就OK了!

    【讨论】:

    • 我不明白为什么卸载 vs 2012 然后安装 vs 2010 然后重新安装 2012
    • 我也有同样的问题
    • 我的意思是:重新安装 vs 2010 而不是 vs 2012,导致 vs 2010 无法工作的问题!所以,我在卸载vs 2012后修复了它。
    • 我找到了解决相同问题的另一种解决方案,希望它可以正常工作,您可以轻松右键单击服务参考,然后选择配置并取消选中引用程序集中的重用类型它将起作用
    • 但是如果我需要在引用的程序集中重用类型怎么办??!
    猜你喜欢
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2020-06-04
    • 1970-01-01
    相关资源
    最近更新 更多