服务参考更新:生成冗余文件

Abh*_*eet 7 c# wcf

当我们Add Service Reference,Visual Studio创建xsd文件如下:

  1. MyService1.xsd
  2. MyService2.xsd
  3. MyService3.xsd

与wsdl和.svcmap文件一起使用.

在后续的更新,使用Update Service Refernce,而不是更新上述文件VS 2010继续添加更多的与多个文件附加自己的名字..

  1. MyService31.xsd
  2. MyService32.xsd
  3. MyService33.xsd ....

这会在连续集成环境中的签入文件和预定构建失败时产生麻烦.:-(编码方面没有任何错误.

你如何处理这种情况?我们Visual Studio可以强制更新现有文件吗?

Viz*_*izu 0

我更喜欢使用 svcutil 来生成元数据 (wsdl+xsd) 和生成代理代码。

它的好处是没有“幕后魔法”发生;您可以看到并控制各个方面。

  • 创建一个 cmd 文件以获取服务的 WSDL+XSD。每当您的服务接口发生更改时,请运行 cmd。将生成的 wsdl 和 xsd 文件添加到源代码管理中,就像处理任何其他外部依赖项(例如第 3 方 dll)一样。Svcutil 可以从 URL 中提取元数据,或者如果您还有实现该服务的程序集,则可以从 .net dll 中提取元数据。

  • 创建用于(重新)生成代理代码的 cmd 文件。每当服务元数据发生更改时就运行它。将生成的 .cs 文件添加到您的项目中。

cmd 文件看起来像这样。你可以定义命名空间映射、序列化器、集合使用等。查看 svcutil 的帮助。

svcutil.exe .\References\MyService\*.wsdl .\References\MyService\*.xsd /namespace:*,MyNamespace /out:.\Source\MySubfolders\MySeviceProxy.cs /serializer:DataContractSerializer /ct:System.Collections。通用列表`1