RMDIR или RD, если Вы используете классическую Командную строку (cmd.exe):
rd /s /q "path"
при использовании PowerShell можно использовать Remove-Item
(который искажается к del
, erase
, rd
, ri
, rm
и rmdir
), и берет -Recurse
аргумент, который может быть закорочен к [1 110]
rd -r "path"
Вы пробовали использовать DependsOnTarget вместо CallTarget? Возможно, проблема с областью видимости вызвана CallTarget.
Предыдущий комментатор был прав, вам следует изменить это, чтобы использовать DependsOnTargets вместо использования задачи CallTarget. Вы видите ошибку , а не проблему определения объема. способ избежать этой ошибки - использовать DependsOnTargets (в любом случае это гораздо лучший подходz).
Sayed Ibrahim Hashimi
Моя книга: Внутри Microsoft Build Engine: Использование MSBuild и Team Foundation Build
Мы делаем нечто подобное в нашей сборке. Мы передаем версию как параметр командной строки.
В нашем TFSBuild.proj мы устанавливаем версию 0.0.0.0, если версия не была предоставлена:
<!--Our assembly version. Pass it in from the command prompt like this: /property:Version=1.0.0.0-->
<PropertyGroup>
<Version>0.0.0.0</Version>
</PropertyGroup>
<PropertyGroup>
<!--Used to ensure there is a newline before our text to not break the .cs files if there is no newline at the end of the file.-->
<newLine>%0D%0A</newLine>
Затем мы делаем это:
<Target Name="BeforeCompile">
<!--Update our assembly version. Pass it in from the command prompt like this: /property:Version=1.0.0.0-->
<!--attrib needs to be run first to remove the read only attribute since files from tfs are read only by default.-->
<Exec Command='attrib -R $(SolutionRoot)\Source\Project\GlobalAssemblyInfo.cs' />
<WriteLinesToFile File="$(SolutionRoot)\Source\Project\GlobalAssemblyInfo.cs"
Lines='$(newLine)[assembly: AssemblyVersion("$(Version)")]'/>
</Target>
Как сказано, вам следует использовать DependsOnTargets. Я провел небольшое исследование объема MSBuild, вы можете найти мои результаты в моем блоге: http://blog.qetza.net/2009/10/23/scope-of-properties-and-item-in- an-msbuild-script /
Дело в том, что существует глобальная область видимости для проекта и локальная область видимости для цели. При входе в цель глобальная область копируется, а при выходе из цели локальная область снова объединяется. Таким образом, CallTarget не получит измененные значения локальной области видимости, но DependsOnTargets получат, поскольку первая цель выходит до входа во вторую цель.