Azure DevOps下.NET 4.8 WinForms项目packages文件夹无法被TF忽略求助
解决TFVC下NuGet packages文件夹无法被.tfignore忽略的问题
这个问题我之前帮同事处理过好几次,核心原因要么是.tfignore的规则写法不符合TFVC的要求,要么是packages文件夹已经被TFVC追踪过了,给你几个逐步排查解决的方案:
1. 修正.tfignore的规则写法
TFVC的.tfignore路径是相对当前文件所在目录的,你当前的规则里\packages是绝对路径(匹配服务器根目录下的packages),而不是你Ice文件夹下的子目录,所以规则不会生效。修改你的.tfignore内容为:
packages !packages/repositories.config .vs
另外要确认:
.tfignore文件确实放在Ice文件夹(项目根目录)下- 文件编码是UTF-8无BOM格式(可以用Notepad++打开查看,编码不对也会导致TFVC忽略这个文件)
2. 移除TFVC已追踪的packages文件
如果packages文件夹之前被意外签入过,.tfignore对已追踪的文件是不起作用的,你需要先把它们从TFVC的追踪列表中移除:
- 在Visual Studio的团队资源管理器中,找到待签入的
packages相关文件,右键选择撤销挂起的更改,取消这些文件的添加操作 - 打开命令提示符,切换到
Ice文件夹,执行以下TFVC命令彻底移除服务器端的packages追踪:tf undo /recursive "$/你的项目路径/Ice/packages/*" tf delete /recursive "$/你的项目路径/Ice/packages" - 签入这个删除操作,完成后
.tfignore的规则就会对新的packages文件生效了
3. 检查项目文件和NuGet设置
旧格式的WinForms项目(ToolsVersion="12.0")可能有特殊配置导致packages被追踪:
- 打开你的
.csproj文件,检查是否有类似下面的配置,如果有就删除它,这会让VS把packages里的文件当作项目内容:<ItemGroup> <Content Include="packages\**" /> </ItemGroup> - 在Visual Studio的NuGet包管理器设置中,确认未勾选“允许将NuGet包作为项目的一部分签入”类的选项(旧版VS里可能叫类似的名称),确保NuGet只下载包而不把它们加入源码控制
4. 刷新TFVC缓存
有时候VS的TFVC缓存会导致规则不生效,尝试:
- 关闭Visual Studio
- 删除缓存目录
%LOCALAPPDATA%\Microsoft\Team Foundation\8.0\Cache下的所有内容(VS2019对应的缓存路径,不同版本可能略有差异) - 重新打开VS并连接到Azure DevOps,刷新团队资源管理器,查看
packages文件夹是否还被标记为待签入
内容的提问来源于stack exchange,提问作者Chris Walsh
相关产品推荐
相关产品推荐

