gpt4 book ai didi

.net - 如何正确修改生成的XSD以克服导致异常 "cs0030:Unable to generate a temporary class"的已知.Net错误

转载 作者:行者123 更新时间:2023-12-04 03:39:39 26 4
gpt4 key购买 nike

我的任务是将数据发送到第三方Web服务,他们提供了经过测试的服务,该服务经证明可与Java客户端一起使用,但是.NET中没有。

当我生成服务代理并实例化服务或序列化请求对象时,出现以下错误:

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[]'

向我们发送此服务的第三方使用Java,并且他们从测试服务生成服务代理没有问题。到目前为止,我的理解是.Net( see here)中存在一个错误,该错误会为WSDL文件生成XSD。

here答案中,它提到了使用哑属性修改生成的XSD,因此我按照建议添加了哑属性:
<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>

添加唯一实现的dummy属性是将项目的编译时间从几分钟减少到几秒钟。

除此之外,VS2008似乎没有注意到更改-在没有得到上述异常的情况下,我仍然无法序列化对象或实例化服务,我丢失了什么或做错了什么?

最佳答案

您必须像在我的问题中一样更改XSD文件,但是您还必须在同一文件夹中修改Reference.cs(或.vb)文件-我在[] []上用[](或())进行了替换()与vb.net中的())。

在我所做的所有阅读中,没有答案说过两者都可以,所以我只是想错了-我希望这个答案对其他人有帮助。

关于.net - 如何正确修改生成的XSD以克服导致异常 "cs0030:Unable to generate a temporary class"的已知.Net错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10514817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com