我有几个WCF服务被不同的Silverlight应用程序使用。我目前正在使用 slsvcutil.exe 和一个非常标准的设置来生成我的Silverlight代理对象:
"%ProgramFiles%\microsoft sdks\silverlight\v4.0\tools\slsvcutil.exe" http://myhost/MyService.svc?wsdl /out:Proxy.cs /edb /namespace:"*,My.Namespace" /ct:System.Collections.ObjectModel.ObservableCollection`1 /r:"%ProgramFiles%\Microsoft Silverlight\4.0.50524.0\System.Windows.dll"
我想要做的是分享某些类型,特别是多个服务及其生成的Silverlight之间的基础RequestMessage
,ResponseMessage
和ApplicationFault
代理。我希望这些类型位于他们自己的公共Silverlight名称空间中,以便我可以使用共享的Silverlight代码来执行轮询服务请求或检查SOAP错误并将其转换为可抛出的已知异常类型。
我认为可以通过使用slsvcutil.exe上的 / r 或 / reference 开关指定具有共享类型的DLL的路径来完成此操作。我尝试像这样构建代理,但它似乎仍然为我试图分享的对象生成新的不兼容类型:
"%ProgramFiles%\microsoft sdks\silverlight\v4.0\tools\slsvcutil.exe" http://myhost/Service.svc?wsdl /out:Proxy.cs /edb /namespace:"*,My.Namespace" /ct:System.Collections.ObjectModel.ObservableCollection`1 /r:"%ProgramFiles%\Microsoft Silverlight\4.0.50524.0\System.Windows.dll" /r:"C:\path\to\MySharedTypes.dll"
关于可能出错的任何想法?或者我对slsvcutil.exe可以使用 / r 开关的错误印象是什么?