2011-03-24 24 views
3

基本上我有以下情形:SVCUTIL.EXE:任何方式來分離我的Commons.xsd類? (C#)

我有2個WSDL文件:

  • User.wsdl
  • Customer.wsdl

這些WSDL的兩端的引用共享.xsd(Schema),以便他們可以使用Address ComplexType。

然後我做svcutil.exe "User.wsdl" "Commons.xsd"來生成用戶wsdl的代碼。
然後我做svcutil.exe "Customer.wsdl" "Commons.xsd"來爲客戶wsdl生成代碼。

問題是這樣的:我如何讓svcutil將Address放入它自己的「Commons」命名空間中?就像現在這樣,它會在兩個輸出文件(User.csCustomer.cs)中創建一個地址類型,這會導致名稱衝突,或者現在我指定一個名稱空間,我有兩個地址類型,每個都在它們自己的名稱空間中,這意味着我無法傳遞用戶和客戶之間地址相同的參考(有時用戶也是客戶,因此他們具有相同的地址)。

是否有某種方法讓svcutil將地址拆分成自己的名稱空間?而且,如果它可以把它放在它自己的文件(Common.cs)中,那也會搖擺不定。但是,我沒有看到這樣做的方法。

回答

2

svcutil有一個/名稱空間參數,它允許您將wsdl名稱空間映射到給定的代碼名稱空間。你可以多次提供這個參數,但是它沒有很好的文檔記錄,所以你可能需要相當多地玩弄它......你可以指定一個通配符,但我不確定你是否可以選出一個名稱空間和通配符其餘的部分。

我對此一無所知,但我認爲如果你同時做兩個wsdl,我認爲他們會合併成一個.cs文件......也許它會很聰明,不會重複類那一點。

例如,

svcutil.exe "User.wsdl" "Customer.wsdl" "Commons.xsd" 
/n:UserAddressNamespace,User.Address 
/n:*,User 

希望這helpssome,我希望我可以給你一個更好的答案,但它一直以來我使用WSDL的很長一段時間。

相關問題