2010-07-13 2 views
1

J'ai un couple de problèmes avec la bonne génération de code à partir d'un ensemble fourni de WSDL et XSDs en dehors de mon contrôle. Pour obtenir la classe proxy droit qui fonctionne avec un FaultException personnalisé, je les params svcutil suivantes:Existe-t-il un moyen de bidouiller Reference.svcmap pour produire un équivalent spécifique à svcutil?

svcutil /t:code /out:InvoiceService_v1.cs /n:*,Test.Invoice_v1 /UseSerializerForFaults *.wsdl *.xsd /config:InvoiceService_v1.config 

Si j'ajoute un service de référence en utilisant Visual Studio, puis le proxy généré interprète correctement la définition de défaut personnalisé. Les paramètres dont j'ai besoin ne sont pas disponibles dans l'outil personnalisé Visual Studio.

Cependant, je peux voir Reference.svcmap généré par l'outil Add Service Reference. A l'intérieur qui sont un certain nombre d'options du client:

<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> 

Est-il possible d'ajuster ces paramètres afin que je puisse utiliser l'interface graphique, plutôt que d'utiliser svcutil à chaque fois? Svcutil ne télécharge et n'analyse pas automatiquement les XSD distants, et le tiers a également scindé le WSDL en une liaison et une interface distinctes. Il y a un peu de travail manuel pour préparer chaque WSDL et XSD avant même que je puisse lancer svcutil. L'interface graphique facilite le processus, mais je n'arrive pas à comprendre comment le forcer à utiliser d'autres commutateurs.

J'ai déjà essayé d'ajouter le ClientOption suivant, mais cela n'a pas fonctionné. Pas d'erreur, mais pas de génération de classe non plus:

<UseSerializerForFaults>false</UseSerializerForFaults> 

Toutes idées reçues!

Répondre

2

Dans mon cas, je viens d'éditer le "Reference.svcmap" et l'enregistrer, Ne vous inquiétez pas, il ne changera pas automatiquement lorsque vous mettez à jour la référence du service. Il suffit donc d'ajouter cet attribut, puis de mettre à jour la référence du service.

Questions connexes