几天来我们一直在与一个奇怪的问题作斗争。在网上搜寻了答案,但似乎都没有解决错误的方法。
我们的场景是:我们的组织有一个Silverlight 5应用程序,该应用程序是在VS 2010中开发的,并且一切正常。它实际上在我们的生产服务器中运行。
最近,我们将开发机器和机器本身(部门专用的新机器)迁移到了VS 2015。操作系统为Windows 7,与以前相同。
最初,由于MS框架,我们遇到了讨厌的MatchTimeoutInMilliseconds错误。最终,MS发布了涵盖此问题的4.6.2预览版。
好的。因此,回到实现所要求的更改之后,我们在Web服务中创建了一个新方法,并且该方法很好用。我们确实有[OperationContract]
and[DataContract]
标签。张贴了一个问题,并回答了这些标签缺失的理由。
但是,当我们转到SL应用程序并更新WS参考时,会收到此“自定义工具错误:无法为服务参考生成代码...”
自定义工具警告消息包括
“无法导入wsdl:binding ...”。
“”无法导入wsdl:port ...“
”无法导入wsdl:portType ...“
”未找到与Silverlight 5兼容的终结点。除非通过构造函数提供了终结点信息,否则生成的客户端类将无法使用。“
我们感到困惑,因为那时我们认为我们可能做错了什么,因此我们回滚了更改,并更新了服务引用而未做任何更改,并且得到了相同的错误。Referece.cs文件不生成任何代码,并且编译器不再识别对Web服务的所有引用。
我们还阅读了一些提供解决方案的文章,这些文章未选中“引用程序集中的重用类型”。这样做确实会清除这些错误,只会产生其他错误,因为我们的应用程序是在此前提下构建的。
我们还尝试删除服务引用,然后再次将其添加回去,但无济于事。
最终,我们将SL应用程序还原到了要编译的位置,即在更新Web服务引用之前,使用新方法重新发布了WS,然后将新方法手动添加到Reference.cs文件中,对其进行了测试并可以正常工作。
但是,这不应该是解决方案。这很麻烦并且容易出错。我们非常感谢您为解决此问题提供的帮助,或者对为什么会发生这种情况的见解。
谢谢
整个问题是,由于某种原因我仍然没有找到,VS无法为Reference.cs生成代码。
解决方法是,我们已经通过使用SlSvcUtil.exe工具生成了Reference.cs文件,该工具位于(在我的机器上)“ c:\ Program Files(x86)\ Microsoft SDKs \ Silverlight \ v5.0 \ Tools ”。
为了获得与迁移前生成的代码相同的代码,我使用了以下命令和选项:
SlSvcUtil.exe my_ws_address / namespace:“ *,my_class_namespace ” /ct:System.Collections.ObjectModel.ObservableCollection`1 / r:“ C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ Silverlight \ v5.0 \ System.Windows.dll“ / edb / ser:自动
我没有使用/ out开关,而是在所需的输出目录上运行了该命令。但是您可能需要在运行命令之前查看该开关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句