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