VS2019 Debug构建时c.dll每两次重建才生成一次的问题
问题排查与解决步骤
针对你遇到的VS2019 Debug模式下c.dll每两次重建才生成一次的问题,可按以下步骤排查:
1. 确认解决方案依赖与构建顺序
- 右键解决方案 → 属性 → 项目依赖项,确保依赖链正确:
c.dll是b.dll的依赖,b.dll是a.dll的依赖 - 切换到“项目构建顺序”页签,确认构建顺序为
c.dll→b.dll→a.dll,避免因顺序倒置导致c.dll被后续清理操作删除
2. 检查c.dll项目的Debug配置
- 右键c.dll项目 → 属性 → 生成:
- 确认输出路径与a.dll、b.dll完全一致(注意相对路径是否正确,比如是否都指向Web项目的
bin\Debug文件夹) - 查看“清理时删除现有文件”选项,若Debug模式下勾选,尝试取消后重新构建,避免重建时c.dll被提前清理却未及时生成
- 再次确认预生成/后期生成事件为空,无隐藏的删除或复制命令
- 确认输出路径与a.dll、b.dll完全一致(注意相对路径是否正确,比如是否都指向Web项目的
3. 清理VS缓存与临时文件
- 关闭VS,删除解决方案根目录下的
.vs隐藏文件夹 - 删除所有项目的
bin和obj文件夹 - 重启VS,执行解决方案清理后再执行重建操作
4. 排查文件锁定问题
- Debug模式下停止Web应用后,检查c.dll是否被进程占用:
- 使用Process Explorer工具搜索
c.dll,确认IIS Express、WebDev服务器或其他进程是否未释放文件锁 - 若存在锁定,结束对应进程后重新构建
- 使用Process Explorer工具搜索
5. 检查项目文件的手动配置
- 用文本编辑器打开c.dll项目的
.csproj文件,查看Debug配置节点:- 确认
<OutputPath>路径正确,无条件编译导致的异常输出逻辑 - 检查
b.dll项目对c.dll的引用属性,确保Debug模式下CopyLocal设置为True,避免c.dll未被复制到输出目录 - 确认无
<SkipBuild>或类似禁用构建的特殊配置
- 确认
6. 更新VS2019到最新补丁
你当前使用的VS2019 16.11.24存在已知的构建逻辑bug,微软在后续补丁中已修复部分问题:
- 打开VS installer,安装16.11系列的最新更新(版本16.11.31为VS2019最终更新),再测试构建行为
内容的提问来源于stack exchange,提问作者S Nash
相关产品推荐
相关产品推荐

