Git与Visual Studio协作时.csproj文件出现异常问题求助
嘿,我之前在VS2017搭配老版本Git时也碰到过类似的诡异问题,给你分享几个亲测有效的排查和解决思路,先把问题场景理清楚:
问题场景
你的环境配置:
- Visual Studio 2017 v15.6.7
- Git v2.17.0.windows.1
异常表现:在Web项目的content/images目录下添加或删除图片时,.csproj文件出现异常行为(比如引用错乱、重复条目、甚至格式损坏)
复现步骤:
- 基于
development开发分支创建新分支 - 在新分支下对
content/images目录进行图片增删操作 - 观察到
.csproj文件出现异常
可行的解决思路
1. 重置VS的文件跟踪设置
VS2017对Web项目的静态文件跟踪偶尔会抽风,你可以这么操作:
- 右键项目→属性→切换到「生成」选项卡
- 先取消勾选「跟踪文件系统更改」,点击「应用」;再重新勾选并应用,强制重置VS的文件监听逻辑
- 重启VS后再测试增删图片的操作
2. 手动修复异常的.csproj文件
如果.csproj已经出问题了,先手动修正:
- 右键项目→卸载项目,然后右键→编辑
.csproj文件 - 查找和
content/images相关的<Content>节点,删掉重复、无效的条目,确保每个图片的引用格式正确,比如:<Content Include="content\images\demo.png" /> - 保存后重新加载项目,再测试操作是否正常
3. 升级Git或VS的版本
你的Git版本2.17.0是比较老的版本,VS2017 v15.6.7也不是该版本的最终更新包,两者的兼容性可能有问题:
- 把Git升级到最新的Windows稳定版(比如2.40以上),新版本修复了不少和文件系统交互的bug
- 给VS2017安装最新的更新补丁(可以更到v15.9.x,这是VS2017的最后一个大版本),微软在后续补丁里修复了很多Web项目的文件跟踪问题
4. 检查.gitignore配置
有时候.gitignore的规则会干扰VS和Git对文件的识别:
- 打开项目根目录的
.gitignore文件,检查有没有误忽略content/images下的文件,或者阻止.csproj文件的改动提交 - 如果有类似
content/images/*或者*.csproj的规则,调整成更精准的配置,确保图片文件和.csproj的正常改动能被识别
5. 清理VS的缓存文件
VS的缓存损坏也可能导致这类奇怪的问题:
- 完全关闭VS,然后删除以下两个目录的缓存:
%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_xxxx\ComponentModelCache(其中xxxx是你的VS实例ID,每个VS安装的ID不一样,找对应的目录就行)%USERPROFILE%\AppData\Local\Temp\VSWebCache
- 重启VS后重新打开项目,再测试增删图片的操作
内容的提问来源于stack exchange,提问作者Paul Sinnema
相关产品推荐
相关产品推荐

