共用方式為


如何:清除組建

清除組建 (Build) 時,所有的中繼檔和輸出檔都會刪除,只留下專案檔和元件檔。 接著再從專案檔和元件檔中,建置 (Build) 中繼檔和輸出檔的新執行個體。 MSBuild 隨附的一般工作程式庫中包含 Exec 工作,您可以用此工作來執行系統命令。 如需工作程式庫的詳細資訊,請參閱 MSBuild 工作參考

建立輸出項目的目錄

在您編譯專案時所建立的 .exe 檔,其預設位置是在與專案檔和原始程式檔 (Source File) 相同的目錄。 不過,輸出項目通常會建立在另一個目錄中。

若要建立輸出項目的目錄

  1. 使用 Property 項目來定義目錄的位置和名稱。 例如,在包含專案檔和原始程式檔的目錄中,建立名為 BuiltApp 的目錄:

    <builtdir>BuiltApp</builtdir>

  2. 如果這個目錄不存在,請使用 MakeDir 工作加以建立。 例如:

    <MakeDir Directories = "$(builtdir)"

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

移除輸出項目

在建立中繼檔和輸出檔的新執行個體前,您可能想先清除中繼檔和輸出檔先前的所有執行個體。 請使用 RemoveDir 工作,從磁碟中刪除目錄以及其中包含的所有檔案和目錄。

若要刪除目錄和其中所包含的所有檔案

  • 使用 RemoveDir 工作來移除目錄。 例如:

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

範例

下列程式碼範例的專案中含有新目標 (Target) 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 目標