使用 WCF 服务处理一个项目。该项目在 git 源代码管理中。
为了让这个项目的本地构建正常工作,我不得不对配置进行更改,基本上是对每个服务的 url 端点更改。
目前似乎每个与服务相关的文件都在源代码管理中
*.wsdl、*.xsd、*.svcinfo、reference.cs、*.disco、*.svcmap 等
这当然是一场噩梦,因为我不想将这些文件推送到存储库。那么哪些wcf服务相关的文件可以排除在git之外呢?
最佳答案
我们使用了两个选项:
- 忽略整个服务引用文件夹
- 忽略除 References.svcmap 之外的所有内容
我们通常会忽略“Service References”文件夹中的整个文件夹。
这意味着当您拉取 repo 的干净副本时,您将在项目中看到服务引用(因为它是 .csproj 的一部分),但如果您尝试更新或配置它,它将抛出错误.任何开发人员第一次使用新机器时,他们必须删除服务引用并通过 VS 重新添加它。
我们的项目是这样设置的,因为开发人员通常针对他们自己的服务版本(或针对多个开发人员的问题的通用版本)进行开发。 Reference.svcmap 具有服务地址,因此在使用与 repo 的 Reference.svcmap 不同的位置托管的服务的任何开发机器上,这将显示为 git 中的未决更改。
如果使用该存储库的每个人都使用相同的服务(或者服务位置仅在分支之间更新),您可以保留 Reference.svcmap 文件。然后开发人员只需从 VS 更新服务引用即可生成所有其他文件。
根据我的经验,这些解决方案的一个警告是,生成的文件并不总是匹配,即当您更新/重新添加服务引用时,VS 可能会将生成的文件命名为文件名 1.xsd 而不是 filename.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"/>
在我们的例子中,我们只是放弃了这些更改(到目前为止还没有破坏任何东西)。
关于c# - WCF 服务 - 哪些部分可以从源代码管理中排除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50151088/