You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework项目删除文件后如何阻止csproj自动重置?

.NET Framework项目.csproj删除文件后自动修改的解决问题

问题描述

我为.NET Framework项目添加了以下规则,用于批量包含所有代码文件:

<ItemGroup>
    <Compile Include="**\*.cs"/>
    <Compile Remove="bin\**\*;obj\**\*"/>
</ItemGroup>

添加文件时项目可正常构建,且不会修改.csproj;但删除项目中的文件后,.csproj会被自动重新生成——改为逐个列出要包含的文件,同时删除<Compile Include="**\*.cs"/>行。

我需要确保删除文件后.csproj保持稳定,避免并行开发分支合并时出现Git冲突。补充说明:我已在新建项目中复现该问题,删除项目内任意类文件并执行构建/重建操作即可触发。

解决方案

1. 禁用Visual Studio的自动文件同步

打开Visual Studio,依次进入「工具」→「选项」→「项目和解决方案」→「常规」,取消勾选以下两个选项:

  • 跟踪文件系统变化
  • 自动检测文件变化并提示重新加载项目
    这会阻止VS自动扫描文件系统变动并修改.csproj。

2. 配置.csproj禁用默认文件包含逻辑

在.csproj文件中添加<EnableDefaultCompileItems>false</EnableDefaultCompileItems>属性,明确禁用MSBuild默认的逐个文件包含行为,强制使用自定义的通配符规则。修改后的完整配置如下:

<PropertyGroup>
  <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>

<ItemGroup>
    <Compile Include="**\*.cs"/>
    <Compile Remove="bin\**\*;obj\**\*"/>
</ItemGroup>

该属性会告诉MSBuild不要自动生成默认的Compile项,完全遵循你定义的通配符规则,无论添加还是删除文件,都不会修改.csproj内容。

3. 手动维护项目文件(可选)

如果上述方法仍无效,可右键项目选择「卸载项目」,直接编辑.csproj文件,确保所有代码文件引用都使用通配符而非逐个列出。编辑完成后重新加载项目,VS将不会自动替换通配符为单个文件引用。


内容的提问来源于stack exchange,提问作者Maor Arnon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:08:11