tfignore含空格路径失效及WCF服务引用.datasource文件无法排除问题
解决TFS tfignore的两个常见问题:.datasource文件排除失效&带空格路径不生效
一、WCF服务引用下的.datasource文件仍出现在挂起变更中
这个问题大概率是因为这些文件已经被TFS跟踪过(比如之前不小心签入过)——tfignore只对未被版本控制的文件生效,按以下步骤解决:
移除已跟踪的.datasource文件(保留本地)
在Visual Studio的团队资源管理器中,找到这些.datasource文件,右键选择「从源代码管理中排除」;或者用TFS命令行工具执行:tf delete /keeplocal "$/你的项目路径/Service References/**/*.datasource"执行后签入这个变更,这样这些文件就不再被TFS跟踪了,后续tfignore规则才能生效。
修正tfignore的排除规则
确保你的tfignore规则精准指向服务引用文件夹的所有子目录,正确写法如下:# 排除所有服务引用文件夹下的.datasource元数据文件 Service References/**/*.datasource这里的
**表示递归匹配服务引用文件夹下的所有子目录,覆盖每个WCF服务生成的文件。
二、含空格的排除路径无法生效
tfignore处理带空格的路径时,只要写法正确就没问题,常见的正确方式有两种:
直接写完整路径(保留空格)
比如你的服务引用文件夹叫Service References,直接写路径即可,不需要转义:Service References/My WCF Service/*.datasource注意:路径必须和实际文件夹名完全一致(包括空格、大小写,Windows系统下大小写不敏感,但建议保持一致避免问题)。
用双引号包裹路径
对于更复杂的带空格路径,可以用双引号把整个路径括起来,确保TFS能正确识别:"Service References/My WCF Service/Sub Folder/*.datasource"
额外排查技巧
- 确保你的
.tfignore文件已经签入到TFS,并且放在项目的根目录(或者对应子目录的根),这样所有工作区都会应用这个规则。 - 修改tfignore后,刷新VS的挂起变更列表,或者重启VS,避免缓存导致规则不立即生效。
- 可以用TFS命令行验证规则:执行
tf status /recursive /noignore,查看哪些文件仍被跟踪,确认你的排除规则是否生效。
内容的提问来源于stack exchange,提问作者Gagan
相关产品推荐
相关产品推荐

