<全局命名空间> 包含多个代码生成文件中 __ 的定义



我就是不知道如何纠正这个问题。它大约在一周前突然出现,我不知道我做了什么改变会导致这种情况。我们使用SVN,我回滚了我对这些错误的罪魁祸首所做的更改,但在我构建asp.net网页表单项目时,我仍然会遇到以下错误:

The namespace <global namespace> already contains a definition for 'TrxStatus'
The namespace <global namespace> already contains a definition for 'MessageStatusType'

这两个错误重复了5次(总共10个错误),源文件是为我们在项目中的Web服务负载生成的代码。

文件名是App_Code.34kjg234jh1.cs(虚构的,但你已经知道了),在每个文件的顶部,它告诉我它是从哪里生成的:

App_CodeApp_WebReferencesSomeServiceSomeWebService.wsdl

如果我进入.wsdl定义,我相信他们确实都生活在同一个命名空间中,基于这一行:(注意,我不是.wsdl-wiz,所以如果我错了,请告诉我)

<s:schema elementFormDefault="qualified" targetNamespace="http://www.thirdpartysite.com/Soa/Foundation/">
<s:import namespace="http://www.thirdpartysite.com/Soa/Foundation/MessageDefinition.xsd" />

这是一个从我们以前的开发人员那里继承的应用程序(这里是一个单一的开发人员商店,所以我通常会在黑暗中四处寻找),所以我不知道为什么我们在应用程序中有大约7个不同的web服务,所有这些都有名称空间定义,所有都有违规的"TrxStatus"one_answers"MessageStatusType"。

我不想更改名称空间,因为这是正确的名称空间(我相信),但我也需要消除这种冲突。我不知道该往哪个方向走。

我试图进入其中一个.wsdl文件并将TrxStatus更改为TrxStatus_AWhatever,但这给了我这个错误:

Unable to import binding 'MyWebServiceName' from namespace http://www.thirdpartysite.com/SOA/Foundation

另一个可能的线索是,我收到了来自各种网络服务的大量警告,上面写着这样的话:

The 'http://www.thirdpartysite.com/Soa/Foundation/MessageDefinition.xsd:SomeElementName' element is not declared. 

对此可能的解决方案有什么建议吗?根本原因是什么?请不要告诉我我需要重写所有这些服务。。。。

我绝对不是一个专家,事实上我很少做ASP.NET&服务。

但是。听起来好像有冲突的导入(即using)正在引入具有相同名称的类型。

项目1:A.某种类型项目2:A.某种类型

你可以在这两个项目中添加引用,而且效果很好(我相信)。但是,当导入两个名称空间时,困难就来了,因为类型名称冲突。

可以使用全局::访问器访问正确的类型。

您甚至可以在using语句中使用global::。

using A = global::[path to correct project and type here]

不确定它是否会对你有多大用处,但有更多关于全球的信息::这里:

http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx

最新更新