是否有可能使用svcutil重用/排除引用類型,就像visual studio一樣。svcutil exlude/reuse refrenced assemblies
我有多個項目,我的類型/數據模型存儲在單獨的程序集中,因此它們可以被其他非wcf項目等使用。更新視覺工作室GUI中的參考時,這一切都可以很好地工作。只要在邊界的兩側都找到了類型,它就不在代理中定義的beeing中。
如何使用svcutil實現相同的功能?
更清楚我想從dll生成代理,而不是包含servicecontract的正在運行的服務。同時,我想提供包含共享類型的dll文件,這些文件應該從代理中定義的beeing中排除。
所有這些的原因是允許我的項目更新並構建在buildserver上。
編輯: 首先感謝您的回覆和參數建議。但是,我沒有得到svcutil按照您的指示重新使用程序集。
這裏是.bat文件的部分我做了我已經排除了所有的標誌產生INotifyPropertyChanged的等
SET BACKENDROOT=C:\SomePath\Development\Backend\bin
SET DATAMODELSBASE=C:\SomePath\Development\DataModels\bin
SET COMMONBASE=C:\SomePath\Development\Common\bin
SET REFRENCED_ASSEMBLIES=/r:%DATAMODELSBASE%\Jall.DataModels.Consignment.dll
svcutil %BACKENDROOT%\Jall.Backend.Consignment.DLL /t:metadata
svcutil /o:test.cs %REFRENCED_ASSEMBLIES% *.wsdl *.xsd
結果如下:
[System.CodeDom.Compiler.GeneratedCodeAttribute("svcutil", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.datacontract.org/2004/07/KSD.DataModels.Consignment")]
public partial class ExtInvoice : OrmBase
{
private System.DateTime buyersOrderDateField;
private bool buyersOrderDateFieldSpecified;
private string buyersOrderNumberField;
private string compCodeField;
.....
並在客戶端它自己:
public Address CreateNewAddress(int TK, string AddressType)
這是不正確的數據模型直接在代理中生成。客戶端不會跳過它們併爲類型使用適當的名稱空間。正確的結果應該是:
public Jall.DataModels.Consignment.Address CreateNewAddress(int TK, string AddressType)
(名稱被scrambeled :))
Brgds, 了Stian
嗨感謝您的答覆。使用給定的命令運行util仍然會在我的代理中生成部分類,而不是從正確的名稱空間引用它們。 – 2012-01-13 09:09:47
如果第二個(代碼生成)發生了什麼,除了指定'reference'開關,還指定'excludeType'? 例如'svcutil/reference: /excludeType:name.space.type1 /et:name.space.type2 * .wsdl * .xsd'。 –
shambulator
2012-01-13 10:57:53
好消化!但是我仍然得到完全相同的結果。 – 2012-01-13 11:26:39