Como posso modificar corretamente um XSD gerado para superar um bug conhecido do .Net que cause a exceção “cs0030: Incapaz de gerar uma classe temporária”

Fui encarregado de enviar dados para um serviço da web de terceiros, eles forneceram um serviço de teste que é comprovado que funciona com um cliente Java, mas não no .Net.

Quando eu gero o proxy de serviço e instancio o serviço ou serializo o objeto de solicitação, recebo o seguinte erro:

<code>Unable to generate a temporary class (result=1). 
error CS0030: Cannot convert type 'TestStarXML.wsStarService.VSOptionInclusiveSetType[]' to 'TestStarXML.wsStarService.VSOptionInclusiveSetType' 
error CS0030: Cannot convert type 'TestStarXML.wsStarService.VSOptionConflictSetType[]' to 'TestStarXML.wsStarService.VSOptionConflictSetType'
error CS0030: Cannot convert type 'TestStarXML.wsStarService.ColorRequirementSetType[]' to 'TestStarXML.wsStarService.ColorRequirementSetType' 
error CS0030: Cannot convert type 'TestStarXML.wsStarService.ColorExclusionSetType[]' to 'TestStarXML.wsStarService.ColorExclusionSetType' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.VSOptionInclusiveSetType' to 'TestStarXML.wsStarService.VSOptionInclusiveSetType[]' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.VSOptionConflictSetType' to 'TestStarXML.wsStarService.VSOptionConflictSetType[]' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.ColorRequirementSetType' to 'TestStarXML.wsStarService.ColorRequirementSetType[]' 
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.ColorExclusionSetType' to 'TestStarXML.wsStarService.ColorExclusionSetType[]'
</code>

A terceira parte que nos enviou esse serviço usa Java e não teve problemas para gerar o proxy de serviço do serviço de teste. Meu entendimento até agora é que existe um bug no .Net (Veja aqui) gerando o XSD para o arquivo WSDL.

Na respostaAqui, menciona modificar o XSD gerado com atributos fictícios, então adicionei o atributo fictício como sugerido:

<code><xs:complexType name="VSInclusivesOptionType">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="VSOptionInclusiveSet" type="tns:VSOptionInclusiveSetType" />
    </xs:sequence>
    <xs:attribute name="tmp" type="xs:string" />   <!-- this is all I have added (for each of the types in the exception message) -->
  </xs:complexType>
  <xs:complexType name="VSOptionInclusiveSetType">
    <xs:sequence>
      <xs:element minOccurs="0" name="SetID" type="ns2:IdentifierType" />
      <xs:element minOccurs="0" name="NumberOfOptionsNumeric" type="xs:decimal" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="VSOption2" type="tns:VSOption2Type" />
    </xs:sequence>
  </xs:complexType>
</code>

A única coisa que adicionava o atributo fictício obtido era reduzir o tempo de compilação do projeto de minutos para segundos.

Além disso, o VS2008 não pareceu notar as alterações - ainda não consigo serializar o objeto ou instanciar o serviço sem obter a exceção mencionada acima, o que estou perdendo ou fazendo errado?

questionAnswers(2)

yourAnswerToTheQuestion