Поделиться через


Очистка сборки

При очистке сборки все промежуточные и выходные файлы удаляются, а остаются только файлы проекта и компонентов. Из файлов проекта и компонентов можно собрать новые экземпляры промежуточных и выходных файлов.

Создание каталога для выходных элементов

По умолчанию файл 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="http://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>