如何:清理生成

清理生成时,将删除所有中间文件和输出文件,仅保留项目和组件文件。 然后,可以根据项目和组件文件生成中间文件和输出文件的新实例。 MSBuild 提供的常规任务库中包括一个 Exec 任务,可以使用该任务运行系统命令。 有关任务库的更多信息,请参见 MSBuild 任务参考

创建输出项的目录

默认情况下,编译项目时创建的 .exe 文件与项目文件和源文件放在同一个目录中。 但是,输出项通常在单独的目录中创建。

创建输出项的目录

  1. 使用 Property 元素定义目录的位置和名称。 例如,在包含项目文件和源文件的目录中创建一个名为 BuiltApp 的目录:

    <builtdir>BuiltApp</builtdir>

  2. 如果该目录不存在,则使用 MakeDir 任务创建该目录。 例如:

    <MakeDir Directories = "$(builtdir)"

    Condition = "!Exists('$(builtdir)')" />

移除输出项

在新建中间文件和输出文件的实例之前,可能需要清除这些文件以前的所有实例。 使用 RemoveDir 任务从磁盘上删除目录和该目录中包含的所有文件和目录。

移除目录和目录中包含的所有文件

  • 使用 RemoveDir 任务移除目录。 例如:

    <RemoveDir Directories="$(builtdir)" />

示例

下面的代码示例项目包含一个新目标 Clean,该目标使用 RemoveDir 任务删除一个目录和该目录中包含的所有文件和目录。 在此示例中,Compile 目标还将为清理生成时删除的输出项创建一个单独的目录。

由于 Compile 被定义为默认目标,因此,除非您另外指定一个或多个目标,否则自动使用该默认目标。 使用命令行开关 /target 另外指定一个目标。 例如:

msbuild <file name>.proj /target:Clean

/target 开关可以缩写为 /t 并可以指定多个目标。 例如,若要依次使用目标 Clean 和 Compile,请键入:

msbuild <file name>.proj /t:Clean;Compile

<Project DefaultTargets = "Compile"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >

    <PropertyGroup>
        <!-- Set the application name as a property -->
        <name>HelloWorldCS</name>

        <!-- Set the output folder as a property -->
        <builtdir>BuiltApp</builtdir>
    </PropertyGroup>

    <ItemGroup>
        <!-- Specify the inputs by type and file name -->
        <CSFile Include = "consolehwcs1.cs"/>
    </ItemGroup>

    <Target Name = "Compile">
        <!-- Check whether an output folder exists and create
        one if necessary -->
        <MakeDir Directories = "$(builtdir)" 
            Condition = "!Exists('$(builtdir)')" />

        <!-- Run the Visual C# compiler -->
        <CSC Sources = "@(CSFile)" 
            OutputAssembly = "$(BuiltDir)\$(appname).exe">
            <Output TaskParameter = "OutputAssembly"
                ItemName = "EXEFile" />
        </CSC>

        <!-- Log the file name of the output file -->
        <Message Text="The output file is @(EXEFile)"/>
    </Target>

    <Target Name = "Clean">
        <RemoveDir Directories="$(builtdir)" />
    </Target>
</Project>

请参见

参考

Exec 任务

MakeDir 任务

RemoveDir 任务

Csc 任务

概念

MSBuild 目标