Практическое руководство. Очистка построения
Обновлен: Ноябрь 2007
При очистке построения все промежуточные и выходные файлы удаляются; остаются только файлы проекта и компонентов. Затем из файлов проекта и компонентов можно строить новые экземпляры промежуточных и выходных файлов. В предоставленной MSBuild библиотеке общих задач имеется задача Exec, с помощью которой можно выполнять системные команды. Дополнительные сведения о библиотеке задач см. в разделе Справочные сведения о задачах MSBuild.
Создание каталога для выходных элементов
По умолчанию EXE-файл, созданный при компиляции проекта, помещается в тот же каталог, где находятся файлы проекта и исходные файлы. Однако выходные элементы обычно создаются в отдельном каталоге.
Создание каталога для выходных элементов
Чтобы определить расположение и имя каталога, используйте элемент Property. Например, создайте каталог с именем BuiltApp в каталоге, содержащем файлы проекта и исходные файлы:
<builtdir>BuiltApp</builtdir>
Если каталога не существует, можно создать его с помощью задачи 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 -->
<appname>HelloWorldCS</appname>
<!-- 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>