【发布时间】:2010-12-08 20:42:22
【问题描述】:
你知道,输出这个的那个=>
----- 干净启动:项目:Foo.Bar,配置:调试任何 CPU ------
========== 清理:1 成功,0 失败,0 跳过 ==========
它在清理什么?
【问题讨论】:
标签: visual-studio build-process
你知道,输出这个的那个=>
----- 干净启动:项目:Foo.Bar,配置:调试任何 CPU ------
========== 清理:1 成功,0 失败,0 跳过 ==========
它在清理什么?
【问题讨论】:
标签: visual-studio build-process
输出目录 - 它删除了之前构建的代码。
它不会删除 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 在背后搞什么鬼。为此,我建议增加写入输出窗口的信息量。 Tools -> Options -> Projects & Solutions -> Build & Run -> MSBuild verbosity -> 从“Minimal”更改为“Normal”或“Detailed”。
再次尝试您的 Clean 操作并立即观察输出!将您看到的内容与 *.targets 文件相关联是开始学习 MSBuild 的好方法。
【讨论】:
它会遍历您的输出目录并删除其中所有与构建相关的文件。
我认为您也可以通过转到项目的属性来配置它
配置属性 -> 常规,在“清理时删除的扩展”下
【讨论】:
删除与构建、输出目录关联的所有文件
【讨论】:
人们使用“清理”来强制从源代码进行完全重建。如果没有更改,您的编译器不会每次都重新构建每个文件。
【讨论】: