Web services 版本控制:svcmap、disco、xsd、wsdl、svcinfo和数据源文件

Web services 版本控制:svcmap、disco、xsd、wsdl、svcinfo和数据源文件,web-services,version-control,service-reference,Web Services,Version Control,Service Reference,我们有一个名为Foo的web服务 因此,Foo.svc.cs后面有一个Foo.svc文件和一个代码 我们添加了一个silverlight项目,并希望使用Foo.svc服务,因此我们添加了一个服务引用,并将其名称空间称为FooBar 这将创建以下文件: 参考资料 Reference.svcmap Foo.xsd 迪斯科舞厅 configuration.svcinfo Foo.wsdl 还有各种*.datasource文件 随着时间的推移,我们更新了Foo.svc并添加了更多的Web服务(方法和

我们有一个名为Foo的web服务

因此,Foo.svc.cs后面有一个Foo.svc文件和一个代码

我们添加了一个silverlight项目,并希望使用Foo.svc服务,因此我们添加了一个服务引用,并将其名称空间称为FooBar

这将创建以下文件:

  • 参考资料
  • Reference.svcmap
  • Foo.xsd
  • 迪斯科舞厅
  • configuration.svcinfo
  • Foo.wsdl
  • 还有各种*.datasource文件
随着时间的推移,我们更新了Foo.svc并添加了更多的Web服务(方法和接口),FooBar目录中的文件数量也在增长

我在这个目录中有26个Foo(nn).xsd文件,其中nn=1到26

我的configuration.svcinfo高达configuration91.svcinfo


我的问题是?这些文件是否需要进行版本控制?每次执行生成\部署时(只要执行更新服务引用),是否都可以删除这些xsd文件?

这些xsd文件只是您创建或更新服务引用时使用的服务元数据。您实际上可以删除它们,因为它们只是在生成引用文件时使用的。无需对这些文件进行版本控制。

Reference.svcmap文件实际上是服务引用的定义。它包含不同的设置以及源链接。 Reference.svcmap应该是源代码控制的,因为它实际上是项目项意义上的服务引用

Reference.cs包含生成的契约和代理,您的代码是根据这些契约和代理编译的。是否对文件进行源代码管理取决于您。通常,这是项目代码的一部分,应该是源代码控制的,但是自动生成它有时会导致意外中断签入


所有其他文件都是生成合同和代理代码时使用的临时文件。它们一起构成了服务公开的元数据的总和,其中包括服务契约(*.wsdl)、数据契约(*.xsd)和配置信息(*.svcinfo)。

我不会把这作为答案,因为我不确定。但对我来说,只有reference.cs文件是最重要的文件。有时slsvcutil.exe无法正确使用vs,因此当我使用它生成silverlight的引用时,只生成reference.cs。谢谢!我刚刚在silverlight论坛上看到了David的同样问题。当然是一个无用的回答。上帝保佑堆栈溢出!这些文件有必要吗?或者所有内容都包含在ServiceReferences.config中?删除all.datasource、all.diso、all.svcinfo甚至references.cs可以吗?@DanielWilliams:Reference.cs实际上会被编译,理论上你可以手动编辑它来添加或更改行为。它不能被删除,除非您想在每次构建代码时更新服务引用,因为它实际上完成了所有工作。从某种意义上说,其他一切都只是创建它的一个步骤。让我测试一下我的理解:本地存储的*.xsd文件是临时文件,Reference.svcmap中的SourceUrl对架构定义有什么影响?svcmap中的url是生成代理时查询元数据的位置。*.xsd文件实际上是从服务的元数据端点返回的。我正在查看实际端点的存储位置,看起来像MetaDataSource标记的Address属性中的Reference.svcmap中的服务引用。对于web引用,它位于proj文件中的WebReferenceUrl标记中。实际端点是可配置的,您可以始终使用具有任何基址的客户端,这在代码和配置中都是可重写的。svcmap中的url通常指向dev/local服务实例。作为一个示例,您还可以直接从解决方案中的另一个项目生成客户机,在这种情况下,您在开发时根本不需要端点,因为该工具可以从源中提取元数据。