Visual Studio删除项目文件夹后csproj出现重复文件原因咨询
问题成因分析
咱们先拆解下为啥会出现这种情况——毕竟你没用到TFS这类版本控制工具,那些针对性方案确实不适用:
- VS文件同步的小故障:如果是在VS的解决方案资源管理器里删除的文件夹,有时候VS的项目文件更新逻辑会“掉链子”:它可能没彻底清理
csproj里对应文件夹的文件引用,甚至在自动更新时误将旧条目重复写入,尤其当文件夹内文件之前被手动修改过csproj、或是VS缓存出现异常时,这种情况更容易发生。 - 文件系统与VS缓存不同步:要是你直接在电脑的文件资源管理器里删了文件夹,没通过VS界面操作,那VS的项目缓存还会保留这些文件的引用记录。等你重新加载项目时,VS扫描文件系统时会把缓存里的旧条目和“试图重新识别”的不存在文件混在一起,进而生成大量重复条目。
csproj本身的格式异常:如果之前你手动编辑过csproj(比如复制粘贴过文件引用标签),或是文件里存在格式错误(比如未闭合的XML标签),那删除文件夹后VS自动更新项目文件时,很容易因为逻辑错误堆积出重复条目。
无版本控制下的解决方案
给你几个亲测有效的解决步骤:
- 手动清理
csproj文件- 先关闭Visual Studio,找到项目根目录下的
你的项目名.csproj文件,用文本编辑器(比如VS Code、Notepad++)打开。 - 搜索你删除的文件夹路径(比如
DeletedFolder\),找到所有对应的文件引用条目(类似<Compile Include="DeletedFolder\Test.cs" />),把重复的或残留的条目全部删除。 - 保存文件后重新打开VS加载项目,重复条目应该就消失了。
- 先关闭Visual Studio,找到项目根目录下的
- 清空VS缓存与编译文件
- 关闭VS,找到项目目录下的
.vs隐藏文件夹(需先开启显示隐藏文件),直接删除它——这是VS的项目缓存文件夹,删除不会影响项目本身。 - 同时删掉项目里的
bin和obj文件夹,清理编译产生的缓存文件。 - 重新打开VS加载项目,它会重新生成缓存并同步文件系统与项目文件,问题大概率能解决。
- 关闭VS,找到项目目录下的
- 卸载后编辑项目文件
- 在VS的解决方案资源管理器里,右键点击项目,选择卸载项目。
- 右键点击卸载后的项目,选择编辑你的项目名.csproj,手动清理重复的文件条目(和第一种方法一致)。
- 保存后右键点击项目选择重新加载项目,VS会重新同步状态,避免缓存干扰。
预防小技巧
以后删除项目内的文件夹,尽量通过VS的解决方案资源管理器操作;如果非要在文件系统里删除,删完记得右键点击项目选择刷新,让VS及时同步文件状态,减少缓存异常的概率。
内容的提问来源于stack exchange,提问作者DhavalR




