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

VS2022 Community自定义生成工具配置修改不生效,重启后自动恢复

问题分析与解决:VS自定义生成工具Outputs配置无法删除且自动恢复的问题

场景概述

  • 接手离职同事的VC++解决方案,项目包含SWIG工具的输入文件MyFile.i
  • 右键该文件进入属性→配置属性→自定义生成工具→常规,可见swig.exe调用参数为%(FullPath),编译时swig.exe可正常执行
  • 编译后出现如下警告:

6>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(245,5): warning MSB8065: Custom build for item "....\swig\MyFile.i" succeeded, but specified output "t:\MyEmployer\MyCodeBase\MyProject\auxiliary\visualstudioprojects\vs2017_wrap.cxx" has not been created. This may cause incremental build to work incorrectly.

  • 属性对话框中Outputs配置为$(InputName)_wrap.cxx;%(Outputs),但$(InputName)自VS2015起已不再支持,导致输出路径缺失文件名
  • 尝试删除$(InputName)_wrap.cxx后点击确定,清理并重新生成解决方案,警告仍存在;重启VS后该配置项自动恢复
  • 在挂载同一文件系统的Linux上搜索,未找到_wrap.cxx、swig.exe及$(InputName)相关内容

配置定义位置

这些自定义生成工具的配置并非仅存在于VS属性对话框的可视化界面,实际存储在以下位置:

  • 项目文件(.vcxproj):直接打开项目的.vcxproj文件,搜索<CustomBuild>或Outputs相关节点,可找到针对MyFile.i的输出配置规则。属性对话框仅读取并展示这里的内容,直接修改对话框可能因缓存或优先级问题不生效。
  • 项目属性表(.props):若项目引用了外部属性表,检查所有关联的.props文件,全局的SWIG自定义生成规则可能定义在这里,导致单个文件的配置被覆盖。
  • 用户级MSBuild配置:较少见,可检查%APPDATA%\Microsoft\MSBuild\v4.0目录下的自定义目标文件,但优先排查项目文件和属性表。

无法删除的原因

  1. 配置优先级覆盖:如果属性表或项目文件中存在全局的SWIG规则(优先级高于单个文件配置),你在单个文件属性中删除的设置会被全局配置覆盖,重启VS后自动恢复。
  2. VS缓存未更新:VS会缓存项目配置,修改对话框设置后,缓存未同步更新到项目文件,重启后读取旧缓存恢复原配置。
  3. 隐式继承的目标规则:MSBuild的系统目标文件(如Microsoft.CppCommon.targets)中可能存在针对.i文件的默认自定义生成规则,自动应用到所有.i文件,覆盖你修改的单个文件配置。

解决步骤

  1. 直接编辑项目文件:
    • 关闭VS,用文本编辑器打开项目的.vcxproj文件
    • 搜索对应MyFile.i的<CustomBuild>节点,删除其中包含$(InputName)_wrap.cxx的Outputs属性,或者修改为正确的输出路径(例如$(SolutionDir)swig\MyFile_wrap.cxx)
    • 保存文件后重新打开VS,清理并重新生成解决方案
  2. 检查并修改属性表:
    • 打开项目属性→属性管理器,查看所有关联的.props文件
    • 逐个打开属性表,搜索Outputs或SWIG相关配置,删除或修改其中的$(InputName)_wrap.cxx条目
  3. 清除VS缓存:
    • 删除项目目录下的隐藏.vs文件夹
    • 清理%TEMP%目录下的MSBuild缓存文件,重启VS后重新加载项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:42:24