不包括使用SLSvcutil(或svcutil)的WCF FaultContracts

不包括使用SLSvcutil(或svcutil)的WCF FaultContracts,wcf,silverlight,svcutil.exe,Wcf,Silverlight,Svcutil.exe,基本上,我有一个silverlight 2客户端,因此我使用了需要访问WCF服务的SLSvcutil 有人知道如何防止SLSvcutil.exe用FaultContractAttribute修饰OperationContracts吗 我正在针对一个WCF服务运行SLSvcUtil,该服务的操作都由Faultcontracts修饰 不幸的是,我不能真正提供任何代码,只是想知道是否有人有一个模糊的想法。我似乎无法让excludeType开关工作,这是我第一次猜测如何实现这一点 谢谢如果您真的想忽略操

基本上,我有一个silverlight 2客户端,因此我使用了需要访问WCF服务的SLSvcutil

有人知道如何防止SLSvcutil.exe用FaultContractAttribute修饰OperationContracts吗

我正在针对一个WCF服务运行SLSvcUtil,该服务的操作都由Faultcontracts修饰

不幸的是,我不能真正提供任何代码,只是想知道是否有人有一个模糊的想法。我似乎无法让excludeType开关工作,这是我第一次猜测如何实现这一点


谢谢

如果您真的想忽略操作的强类型故障数据约定,您可以从服务的wsdl中删除该定义。但是从生成的类中删除它会更容易。做一个查找所有故障契约属性并替换为编辑-我让它与SL 3运行时一起工作。。。 我必须删除对System.ServiceModel和System.Net的所有旧引用,并将它们从运行x64 windows的位置重新添加

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0
一旦我做到了,它就成功了!抱歉,如果你仍然以2.0运行时为目标,但我想我会发布此更新,以防将来有人发现此页面

这可能是我的问题,因为我使用x64 windows。。。以下是程序集引用的新proj文件的外观:

<Reference Include="System.Net, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\System.Net.dll</HintPath>
</Reference>    <Reference Include="System.ServiceModel, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\System.ServiceModel.dll</HintPath>
</Reference>
使用SlSvcUtil v3.0工具,顺便说一句,您可以得到:

// This code was auto-generated by slsvcutil, version 3.0.40624.0
所以我认为您无法将端口返回到v2.0。不幸的是,您也不能在3.0运行时使用SlSvcUtil!我觉得这很可笑——或者我就是不能让它正常工作

我以3.0运行时为目标,使用了SlSvcUtil,它告诉我这是开箱即用的

The type or namespace name 'FaultContractAttributeAttribute' does not exist 
in the namespace 'System.ServiceModel' (are you missing an assembly reference?)
该类确实存在于System.ServiceModel 3.0.*中,但Silverlight正在使用2.0.*而它不存在的地方。。。kicker-尝试添加对3.0版本的引用,您会遇到以下问题:

You can't add a reference to System.ServiceModel.dll as it was not built against the 
Silverlight runtime. Silverlight projects will only work with Silverlight assemblies
所以即使你在v3.0上,你也会像我一样成为索尔

希望有人能回复告诉我们怎么做,但我认为这是不可能的。。。有人-请证明我错了!!!:


抱歉,伙计…

不知道为什么要忽略合同的某些部分。这是一份合同。好吧,这一切都很好,但是VS2008中的“添加服务引用”选项似乎能够很好地去除错误的合同。我甚至不确定System.ServiceModel的silverlight版本是否支持System.ServiceModel.FaultContractAttribute。我猜不是。只是使用Reflector和nope检查了System.ServiceModel的silverlight版本,它不包含FaultContractAttributes。silverlight 3将支持FaultContracts-这些是WCF不可分割的一部分,不应该被忽略。正如安德森所说:这是一份合同。是的,我不想忽视他们,我是说Silverlight 2不支持合同。不幸的是,我不能使用Silverlight 3,它确实支持它们。而且你们都忽略了一点,添加服务引用对话框以某种方式成功地从生成的类中去除了FaultContract。我假设它在幕后使用了SLSvcutil,所以一定有一些神奇的地方。我问的原因是,在默认情况下,VS2008的“添加服务引用”功能(我假设它使用了SLSvcutil)似乎可以正确地删除FaultContracts。不幸的是,我无法使用它,因为它似乎突然坏得可怕,迫使我使用命令行手动生成代理类。我不想手动删除FaultContracts,因为我必须在每次服务更新后执行此操作,这在dev中非常频繁。您是否尝试过svcutil.exe而不是SLSvcutil.exe?据我所知,添加服务引用时使用了svcutil。不,对不起……我忘了提到这是一个访问WCF服务的silverlight项目。我将更新原始查询。很抱歉
You can't add a reference to System.ServiceModel.dll as it was not built against the 
Silverlight runtime. Silverlight projects will only work with Silverlight assemblies