Как правильно изменить сгенерированный XSD для устранения известной ошибки .Net, которая вызывает исключение «cs0030: невозможно создать временный класс»

Мне было поручено отправить данные стороннему веб-сервису, он предоставил тестовый сервис, который, как было доказано, работает с Java-клиентом, однако его нет в .Net.

Когда я генерирую прокси службы и создаю экземпляр службы или сериализую объект запроса, я получаю следующую ошибку:

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

Сторонние поставщики, которые отправили нам этот сервис, используют Java, и у них не возникло проблем при создании прокси-сервера сервиса из тестового сервиса. Насколько я понимаю, есть ошибка в .Net (посмотреть здесь) создание XSD для файла WSDL.

В ответВотв нем упоминается об изменении сгенерированного XSD с помощью фиктивных атрибутов, поэтому я добавил атрибут dummy, как было предложено:

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

Единственное, что было добавлено, - это сокращение времени компиляции проекта с минут до секунд.

Кроме этого, VS2008, похоже, не заметил изменений - я все еще не могу сериализовать объект или создать экземпляр службы без получения исключения, упомянутого выше, что я пропустил или сделал неправильно?

Ответы на вопрос(2)

Ваш ответ на вопрос