9

当我在Visual Studio 2008中添加一个WCF服务引用时,会创建一个名为Service Reference \ ServiceReferenceNamespace的目录。这些WCF服务参考文件是什么

在此目录中,存在名为Service.xsd,Service1.xsd,Service2.xsd,Service3.xsd和Service4.xsd的文件。这些文件不是重复的 - 不同的文件定义了不同的类型和元素。当我第一次创建服务引用时,只有一个文件,但添加更多DataContract和OperationContracts时添加了更多Service * - 文件。

看起来有点奇怪,生成了5个不同的文件,而不仅仅是一个。如果我删除服务引用(并因此删除该目录),然后再次添加它,则会再次添加相同的文件。

任何人都可以解释为什么创建几个文件,而不只是一个?

回答

4

当您执行添加服务引用时,VS首先下载描述该服务的元数据(作为WSDL和XSD文件)。这些存储在ServiceReference目录中。然后VS使用这些文件作为输入运行代码生成步骤,生成Reference.cs或.vb作为输出。

+0

也许我不清楚。我的问题是为什么有Service1.xsd,Service2.xsd,Service3.xsd和Service4.xsd,而不仅仅是Service.xsd。 – Martin 2009-11-24 08:54:51

+3

你会得到每个类型命名空间的一个xsd文件。对于使用DataContractSerializer的WCF服务,您通常会为每个类型使用的CLR名称空间获取一个XSD名称空间,并为内置类型另外添加一个名称空间。如果要将所有应用程序定义的类型放入一个XSD名称空间,可以使用[DataContract(Namespace =“...”)]将其设置为任何URI。 – alexdej 2009-11-24 16:53:40