我在一个项目中引用了两个不同的 WCF 服务。我更新了其中一项服务的参考,现在没有为它生成任何代码。references.cs 文件顶部只有“这是生成的代码”注释。在其他项目中更新相同的服务并更新其他服务都可以正常工作。只是这个项目中的一个服务引用导致了问题,我没有从 Visual Studio 获得任何信息(它只是说它无法生成代码,我应该查看其他错误,这些错误没有提供任何信息)。
如果我取消选中“引用程序集中的重用类型”,则会生成代码,但我不想让这个项目与其他项目不同。我想解决问题。重新检查重用类型选项会再次生成一个空的 references.cs 文件。集合类型似乎也不重要。
我该如何诊断和解决这个问题?
更新:
看来我弄错了。更新服务引用似乎也破坏了其他项目的生成。我也确实注意到了这些警告:
自定义工具警告:无法导入 wsdl:portType 详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.DataContractSerializerMessageContractImporter 错误:命名空间“http://schemas.datacontract”中具有数据协定名称“异常”的 ISerializable 类型.org/2004/07/System' 无法导入。无法为 ISerializable 类型自定义数据协定命名空间,并且生成的命名空间“TheDefaultNamespaceOfTheProject.ServiceReferenceName”与所需的 CLR 命名空间“System”不匹配。检查所需的命名空间是否已映射到不同的数据协定命名空间,并考虑使用命名空间集合显式映射它。
显然我在那里更改了命名空间,但它似乎试图将 System.Exception 映射到 ThatNamespace.Exception?为什么会这样做,我该如何纠正?我认为这是整个事情的关键。