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

Visual Studio 2022 Rebuild All会删除非项目生成的.obj文件吗?

Visual Studio 2022 Rebuild All 删除手动生成的ASM .obj文件的原因及解决办法

原因说明

这是Visual Studio 2022在17.0版本之后的更新中强化的构建目录清理逻辑,目的是彻底清除项目中已移除源文件对应的残留构建产物,避免因旧文件导致的链接冲突或构建错误。

  • VS自身构建的C/C++带_c后缀的.obj文件,属于项目构建系统追踪的“预期产物”,Rebuild All时只会根据项目依赖关系更新这些文件,不会误删。
  • 你通过命令行手动生成的ASM .obj文件,不在VS的构建依赖追踪列表中,会被判定为“无关残留文件”,在Rebuild All的清理阶段被删除。

更简便的解决办法

比起手动创建新目录修改脚本,有两种更高效的方案:

  1. 将ASM编译集成到VS项目构建流程
    打开项目属性→生成事件→生成前事件(或生成后事件,根据你的编译时机调整),添加你的ASM编译命令(比如ml /c /coff input.asm /Fo$(OutDir)output.obj)。这样生成的.obj会被VS纳入构建依赖管理,Rebuild All时不仅不会删除,还会同步重新编译ASM文件。

  2. 排除ASM .obj文件被清理
    直接修改项目文件(.vcxproj),添加ExcludeFromClean节点,指定需要保留的ASM .obj路径:

    <ItemGroup>
      <!-- 匹配所有在输出目录下的ASM生成的.obj文件,可根据实际文件名调整 -->
      <ExcludeFromClean Include="$(OutDir)*.asm.obj" />
    </ItemGroup>
    

    保存后,Rebuild All就会跳过这些文件的清理操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:12:06