WCF 服务 - 哪些部分可以从源代码管理中排除?

win*_*yip 6 .net c# wcf

使用 WCF 服务处理项目。该项目在 git 源代码控制中。

为了使该项目的本地构建正常工作,我必须对每个服务进行配置更改,基本上是对每个服务的 url 端点更改。

目前似乎与服务相关的每个文件都在源代码控制中

*.wsdl、*.xsd、*.svcinfo、reference.cs、*.disco、*.svcmap 等。

这当然是一场噩梦,因为我不想将这些文件推送到 repo。那么git可以排除哪些wcf服务相关的文件呢?

Lit*_*ium 0

我们使用了两个选项:

  1. 忽略整个服务引用文件夹
  2. 忽略除 References.svcmap 之外的所有内容

我们通常忽略“Service References”文件夹中的整个文件夹。

这意味着当您提取存储库的干净副本时,您将在项目中看到服务引用(因为它是 .csproj 的一部分),但如果您尝试更新或配置它,它将引发错误。任何开发人员第一次使用新机器时,都必须删除服务引用并通过 VS 重新添加它。

我们的项目是以这种方式设置的,因为开发人员通常针对他们自己的服务版本进行开发(或者针对多个开发人员的问题使用通用版本)。Reference.svcmap 具有服务地址,因此这将在任何使用托管在与存储库的 Reference.svcmap 不同位置的服务的开发计算机上的 git 中显示为待处理更改。

如果使用该存储库的每个人都使用相同的服务(或者服务位置仅在分支之间更新),则可以保留 Reference.svcmap 文件。然后开发人员只需更新 VS 的服务引用即可生成所有其他文件。

对于这些解决方案中的任何一个,需要注意的是,根据我的经验,生成的文件并不总是匹配,即当您更新/重新添加服务引用时,VS 可能会将生成的文件命名为文件名1.xsd而不是文件名.xsd 。(也许其他人知道是什么原因造成的)。然后,在带有服务引用的 .csproj 文件的 git 未提交更改中,您会得到一些:

-    <None Include="Service References\ServiceRef\System.Drawing.xsd">
+    <None Include="Service References\ServiceRef\System.Drawing1.xsd">
-    <None Include="Service References\ServiceRef\service.xsd">
+    <None Include="Service References\ServiceRef\service1.wsd"/>
Run Code Online (Sandbox Code Playgroud)

在我们的例子中,我们只是放弃这些更改(到目前为止还没有破坏任何内容)。