VS2019无文件变更提示up-to-date不执行构建解决方法
Visual Studio 2019 强制每次执行完整构建配置方法
问题现象
项目配置post-build(生成后)脚本后,无文件变更时触发构建会直接判定为up to date(已是最新),跳过所有生成步骤包括post-build脚本,构建输出如下:
Build started... ========== Build: 0 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
该现象在IDE内点击生成、命令行调用msbuild执行普通构建时都会出现。
永久配置方案(修改项目文件)
该方案配置完成后,每次点击普通生成、调用普通msbuild命令都会走完整构建流程,不需要手动选重新生成:
- 右键目标项目,选择「卸载项目」,再次右键已卸载的项目,选择「编辑[你的项目名].csproj」
- 找到文件内第一个没有条件限制的
<PropertyGroup>节点,在节点内添加两个配置项:
<!-- 关闭VS快速最新版本检查 --> <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> <!-- 关闭MSBuild基于文件时间戳的*增量构建*判断 --> <MSBuildDisableFastUpToDateCheck>true</MSBuildDisableFastUpToDateCheck>
- 如果添加上述配置后仍偶发跳过构建,在csproj文件末尾、
</Project>闭合标签前追加如下目标配置,强制构建系统判定项目始终为过期状态:
<Target Name="ForceBuildEveryTime" BeforeTargets="CoreCompile"> <PropertyGroup> <_ProjectIsUpToDate>false</_ProjectIsUpToDate> </PropertyGroup> </Target>
- 保存csproj文件,右键项目选择「重新加载项目」即可生效。
临时方案(不修改项目配置)
如果只是临时需要触发完整构建,不需要改项目文件:
- IDE内操作:不要点「生成」,直接点击顶部菜单栏「生成」-「重新生成[解决方案/项目]」,该操作默认会清理上次构建产物,完整执行所有构建步骤包括post-build脚本
- 命令行MSBuild操作:执行构建命令时追加
/t:Rebuild参数,强制走重建流程,示例命令:
msbuild YourProject.csproj /t:Rebuild /p:Configuration=Debug
注意:如果post-build脚本本身不需要依赖完整重编译,不建议长期开启强制全量构建,会增加不必要的构建耗时。如果只是需要每次执行指定脚本,可以单独给脚本配置独立的自定义生成目标,不需要强制全量编译。
内容的提问来源于stack exchange,提问作者POVR2
相关产品推荐
相关产品推荐

