在 Visual Studio 中,“清理”命令有什么作用?

问题描述 投票:0回答:5

你知道,输出这个=>

------ 干净启动:项目:Foo.Bar,配置:调试任何 CPU ------
========== 清理:1 成功,0 失败,0 跳过 ==========

清洁什么?

visual-studio build-process
5个回答
90
投票

输出目录 - 它删除了之前构建的代码。

它不会删除 bin/obj 目录本身(或它们下面的 Debug/Release 目录),只是删除实际的 .exe、.dll 等文件。不幸的是,这使得它对于我通常使用的清理输出目录的用途不太有用:当我想要压缩源代码时。由于 Clean 操作不会执行此操作,因此我通常直接删除 bin 和 obj 目录。


35
投票

为什么不去找找你自己呢? 打开 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 的好方法。


15
投票

它会遍历您的输出目录并删除其中任何与构建相关的文件。

我认为您还可以通过转到

中的项目属性来配置它

配置属性 -> 常规,在“清理时删除的扩展”下


6
投票

人们使用“干净”来强制从源头完全重建。 如果文件没有改变,你的编译器不会每次都重建它。


5
投票

它会删除与构建输出目录关联的所有文件。

© www.soinside.com 2019 - 2024. All rights reserved.