是否有可能使用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