SVCUtil“更新服务参考”等效命令参数
Posted
技术标签:
【中文标题】SVCUtil“更新服务参考”等效命令参数【英文标题】:SVCUtil "update service reference" equivalent command parameters 【发布时间】:2011-04-13 02:45:09 【问题描述】:我想通过使用 SVCUtil 更新 Visual Studio 2010 解决方案中的服务引用,因为该解决方案有多个项目,并且不适合逐个刷新引用。
我想知道你的意思,因为我必须确保我将执行与 Visual Studio 2010 执行的命令完全相同的命令,或者即使 Visual Studio 2010 不使用 SVCUtil,一个等价的命令到 IDE 的行为。
非常感谢。
【问题讨论】:
【参考方案1】:一些谷歌搜索 here 和 here 显示了 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 的帖子提出了一个很好的观点(并且可以用作称为Service Agent 的标准设计模式的一部分,它处理客户端代理的实现)。 当你说两层需要引用同一个程序集时,我不太确定你的意思是什么?如果您要共享服务中调用的实体类型,则无论如何都需要在大多数层中引用实体程序集。对于您的服务代理程序集项目(具有所有服务引用),您可以重新公开 WCF 服务器使用的相同服务合同或将其包装在新接口中。
【讨论】:
感谢您的回答。我不确定这是我进行参考更新所需要的。我在您的第一个链接之前发现,第二个是一个很好的信息,但无论如何,我不想“添加服务参考”而是“更新服务参考”。也许我错了,但更新可能就像删除和重新创建所有内容一样,不是吗? 抱歉耽搁了。我目前正在使用更优雅的 VS 自动化 (EnvDTE) 解决这个问题,并确保通过使用从 UI 引发的相同 VS 命令准确更新服务引用。【参考方案2】:刷新大量服务引用的最简单方法是将所有这些引用放在一个专门的项目中。从所有需要使用它们的项目中引用这个项目。 如果需要更新服务参考,您只需在一处进行。
【讨论】:
对,我相信这是一个很好的解决方案!谢谢!无论如何,问题是如果你有一个客户端-服务器基础设施,你将无法做到这一点,因为你不希望项目对这两个层都有依赖。以上是关于SVCUtil“更新服务参考”等效命令参数的主要内容,如果未能解决你的问题,请参考以下文章
为啥有的LINUX命令行有2个减号,比如 ps -aux --sort pid 而用ps -aux -sort pid 就不行呢?