刚接触Visual Studio的新人开发者总会有这样的疑问:工具栏上并排的"生成解决方案"、“重新生成解决方案”、"清理解决方案"三个按钮到底有什么区别? 我亲眼见过同事小王因为误点清理按钮,导致整个项目需要重新编译半小时的惨剧(说多了都是泪)!!
其实这三个构建选项是微软给开发者准备的「编译三件套」,用对了能极大提升开发效率,用错了嘛…(你懂的)今天我们就来扒一扒它们的底裤,看看这三个看似相似的按钮到底藏着什么秘密!
工作方式:智能增量编译(只编译改动过的文件)
编译速度:(最快)
磁盘占用:会保留中间文件
经典场景:
(超级重要)!!生成解决方案其实是日常开发中使用频率最高的功能,它能自动跳过未修改的文件,节省大量编译时间!
工作方式:强制全量编译(所有文件重新编译)
编译速度:(最慢)
磁盘占用:替换所有中间文件
救命时刻:
某次我在处理WPF项目时,XAML修改后界面不刷新,重新生成后问题立即消失——这就是全量编译的魔力!
工作方式:删除所有中间文件
编译速度:(瞬间完成)
磁盘清理:可释放数GB空间
使用警告:
(血泪教训)记得有次误点了清理,结果2万行代码的项目重新编译花了28分钟…从此养成了定期备份obj文件夹的好习惯!
案例1:添加新接口后实现类报错
案例2:NuGet包升级后编译失败
案例3:VS提示"无法写入输出文件"
在【工具】→【选项】→【项目和解决方案】→【生成并运行】中:
在.csproj文件中添加条件编译指令:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<OutputPath>..\bin\DebugOutputPath>
PropertyGroup>
这样可以为不同构建配置指定不同的输出目录(调试/发布模式自由切换)
在项目属性→生成事件中:
(实战技巧)我曾经用生成事件实现过自动文档生成+单元测试+安装包打包的全流程自动化!
最后送大家一个构建口诀:
日常开发用生成,疑难杂症重新上
提交代码前清理,三大法宝要记牢
遇到错误不要慌,查看日志找线索
配置优化做得好,编译速度飞起来!
下次当你在Visual Studio中面对这三个按钮时,希望你能胸有成竹地做出最佳选择!如果这篇文章解决了你多年的困惑,不妨Ctrl+S保存起来(别问我怎么知道的)~