你知道,输出这个=>
------ 干净启动:项目:Foo.Bar,配置:调试任何 CPU ------
========== 清理:1 成功,0 失败,0 跳过 ==========
清洁什么?
输出目录 - 它删除了之前构建的代码。
它不会删除 bin/obj 目录本身(或它们下面的 Debug/Release 目录),只是删除实际的 .exe、.dll 等文件。不幸的是,这使得它对于我通常使用的清理输出目录的用途不太有用:当我想要压缩源代码时。由于 Clean 操作不会执行此操作,因此我通常直接删除 bin 和 obj 目录。
为什么不去找找你自己呢? 打开 Microsoft.Common.Targets(位于 %windir%\Microsoft.NET 下),您将看到如下部分:
<!--
============================================================
Clean
Delete all intermediate and final build outputs.
============================================================
-->
<PropertyGroup>
<CleanDependsOn>
BeforeClean;
CleanReferencedProjects;
UnmanagedUnregistration;
CoreClean;
CleanPublishFolder;
AfterClean
</CleanDependsOn>
</PropertyGroup>
<Target
Name="Clean"
Condition=" '$(_InvalidConfigurationWarning)' != 'true' "
DependsOnTargets="$(CleanDependsOn)" />
继续阅读以了解每个子目标的具体作用。 (当然,有些只是供用户覆盖的存根)。
就我个人而言,我喜欢看看我的 IDE 在背后搞什么把戏。 为此,我建议增加写入输出窗口的信息量。 工具 -> 选项 -> 项目和解决方案 -> 生成并运行 -> MSBuild 详细程度 -> 从“最小”更改为“正常”或“详细”。
再次尝试 Clean 操作并立即观察输出! 将您看到的内容与 *.targets 文件相关联是开始学习 MSBuild 的好方法。
它会遍历您的输出目录并删除其中任何与构建相关的文件。
我认为您还可以通过转到
中的项目属性来配置它配置属性 -> 常规,在“清理时删除的扩展”下
人们使用“干净”来强制从源头完全重建。 如果文件没有改变,你的编译器不会每次都重建它。
它会删除与构建输出目录关联的所有文件。