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

时间:2013-03-19 15:28:27

标签: c# wcf

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

  1. MyService1.xsd
  2. MyService2.xsd
  3. MyService3.xsd
  4. 与wsdl和.svcmap文件一起使用。

    在后续更新中,使用Update Service Refernce而不是更新上述文件VS 2010继续添加更多&更多文件附加其名称..

    1. MyService31.xsd
    2. MyService32.xsd
    3. MyService33.xsd ....
    4. 这会在登记文件时造成麻烦。持续集成环境中的预定构建失败。 :-(编码方面没有任何错误。

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

2 个答案:

答案 0 :(得分:0)

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

关于它的好处是没有“幕后魔术”发生;你看到并控制着每一个方面。

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

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

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

svcutil.exe。\ References \ MyService \ * .wsdl。\ References \ MyService \ * .xsd  /命名空间:*,myNameSpace对象  /out:.\Source\MySubfolders\MySeviceProxy.cs  /串行化:DataContractSerializer的  /ct:System.Collections.Generic.List`1

答案 1 :(得分:0)

在尝试更新服务引用之前,请检查自动生成的文件,以便VS可以访问这些文件。我相信您的文件已被锁定,导致Visual Studio无法更改它们。这将导致你所看到的。