【问题标题】:Service Reference Update : generating redundant files服务参考更新:生成冗余文件
【发布时间】:2013-03-08 08:56:37
【问题描述】:

当我们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 强制更新现有文件吗?

【问题讨论】:

  • 默认情况下应该重用文件,不确定是什么导致他们每次都创建新文件。你用的是什么SVN?也许文件被设置为只读并阻止 Visual Studio 能够更新文件?
  • 我猜这是 TFS
  • @JeremyK, @Clinton 我们使用IBM Clearcase 进行版本控制。但是我认为文件的只读属性不应该是生成新文件的原因......因为解决方案中还有其他只读文件,如......1。 Reference.cs 2. Web.Config 3. .svcmap 文件.. 触发Service Reference Update 命令提示我覆盖/签出这些文件..
  • 我在使用 Visual Studio 的添加/更新服务引用功能时也遇到了一些深奥的问题,这就是我改用 svcutil+command 文件的原因。如果您想尝试一下,请告诉我,我可以将此类命令文件的示例发送给您。
  • 我认为 readonly 是问题所在......自己试试这个。创建一个文本文件,然后将其设置为只读。现在对一个打开文件进行编辑的函数,你会得到一个异常。如果文件是只读的并且您尝试更新参考,它将无法更新。

标签: c# wcf


【解决方案1】:

我更喜欢使用 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 /命名空间:*,我的命名空间 /out:.\Source\MySubfolders\MyServiceProxy.cs /序列化器:数据合同序列化器 /ct:System.Collections.Generic.List`1

【讨论】:

  • 对他的问题没有帮助。
  • 是的,它没有回答 Visual Studio 为何这样做的问题,但提出了处理服务元数据的替代解决方案,这有助于避免 xsd 文件名的问题。如果直接使用svcutil,我认为不会发生这种情况。
  • 一开始就不应该发生这种情况。我使用这两种方法,它们有它们的权衡,但我从未见过他正在经历什么,这可能不是解决方案,而是其他阻碍。将他推向不同的解决方案而不是解决问题是浪费时间。如果他不需要对界面进行自定义更改,则右键单击和更新要比每次进行更新时都必须运行外部工具并复制/粘贴要方便得多。
【解决方案2】:

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

【讨论】:

  • 我确实检查了整个服务参考文件夹。之前我有文件 MyService1.xsd, MyService2.xsd, MyService3.xsd,更新时我可以看到像 MyService31.xsd... MyService33.xsd 这样的文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多