在我控制之外的一组提供的WSDL和XSD中正确生成代码时,我遇到了一些问题。要获得使用自定义FaultException的正确代理类,我有以下svcutil参数:
svcutil /t:code /out:InvoiceService_v1.cs /n:*,Test.Invoice_v1 /UseSerializerForFaults *.wsdl *.xsd /config:InvoiceService_v1.config
如果我使用Visual Studio添加服务引用,则生成的代理会错误地解释自定义Fault定义。我需要的设置在Visual Studio自定义工具中不可用。
但是,我可以看到Add Service Reference工具生成的Reference.svcmap。里面有许多客户选择:
<ClientOptions>
<GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
<EnableDataBinding>true</EnableDataBinding>
<ExcludedTypes />
<ImportXmlTypes>false</ImportXmlTypes>
<GenerateInternalTypes>false</GenerateInternalTypes>
<GenerateMessageContracts>false</GenerateMessageContracts>
<NamespaceMappings />
<CollectionMappings />
<GenerateSerializableTypes>true</GenerateSerializableTypes>
<Serializer>Auto</Serializer>
<ReferenceAllAssemblies>true</ReferenceAllAssemblies>
<ReferencedAssemblies />
<ReferencedDataContractTypes />
<ServiceContractMappings />
</ClientOptions>
是否可以调整这些设置以便我可以使用GUI,而不是每次都使用svcutil?
Svcutil不会自动下载和解析远程XSD,第三方也将WSDL拆分为单独的绑定和接口。在我甚至可以运行svcutil之前,准备每个WSDL和XSD还需要相当多的手动工作。
GUI使这个过程变得简单,但我无法弄清楚如何强制它使用替代开关。
我已经尝试添加以下ClientOption,但它不起作用。没有错误,但也没有类生成:
<UseSerializerForFaults>false</UseSerializerForFaults>
欢迎任何想法!
答案 0 :(得分:2)
在我的情况下,我刚编辑了“Reference.svcmap”并保存它,不要担心更新服务引用时它不会自动更改。所以只需在其中添加此属性,然后更新服务引用。