3

我想通过使用 SVCUtil 来更新 Visual Studio 2010 解决方案中的服务引用,因为该解决方案有多个项目,并且逐个刷新引用并不好。

我想知道你的意思,因为我必须确定我将执行与 Visual Studio 2010 执行的命令完全相同的命令,或者即使 Visual Studio 2010 不使用 SVCUtil,它是 IDE 的等效命令行为。

非常感谢你。

4

2 回答 2

3

刷新大量服务引用的最简单方法是将所有这些引用放在一个专门的项目中。从所有需要使用它们的项目中引用这个项目。如果需要更新服务参考,您只需在一处进行。

于 2010-09-16T16:54:40.950 回答
1

在此处此处进行的一些谷歌搜索显示了 VS 2008 上的设置,尽管这当然取决于您在“添加服务参考”向导的“高级”选项中的选项。

来自:http : //geekswithblogs.net,Dave Barrett,2008 年 6 月 30 日:

与 Visual Studio 2005 不同,Visual Studio 2008 中的添加服务引用命令不使用 svcutil.exe,而是使用它自己的内置功能。

使用两者之间的比较参考和我自己对结果的分析,我想出了以下命令来模仿该命令在 VS 2008 中的作用(请记住其中的一些选项,例如 /ct 和 /l开关,特定于我的情况):

svcutil *.wsdl *.xsd /l:C# /out:Reference.cs /noconfig /s 
        /ct:System.Collections.Generic.List`1 /ser:Auto /tcv:Version30 
        /n:*,<NameOfYourNamespaceHere> /edb

我从 VS2008 命令行在模式文件(WSDL、XSD)所在的文件夹中运行了它。

编辑:同意 - 永远不要害怕从头开始删除和重新创建服务引用。当使用像 TFS 这样的版本控制时,“更新”服务引用通常会很混乱,因为它会计算出哪些 wsdl、xsd 和 disco 文件等已被更改、添加或删除等(并获得像 SomeXSD92.xsd 这样的文件名)。通常,只需删除并重新创建它们会更快。

Johan 的帖子提出了一个很好的观点(并且可以用作标准设计模式的一部分,称为服务代理,它处理客户端代理的实现)。当您说两层需要引用同一个程序集时,我不太确定您的意思是什么?如果您共享服务中调用的实体类型,则无论如何都需要在大多数层中引用实体程序集。对于您的服务代理程序集项目(具有所有服务引用),您可以重新公开 WCF 服务器使用的相同服务合同或将其包装在新接口中。

于 2010-09-16T09:14:10.013 回答