Я не знаю, работает ли SVN аналогично TFS (у него есть кэш и т. Д.), Но вот как я это делаю с CC.NET и Sourcesafe:
В разделе предварительной сборки моего проекта я проверяю, что я очищаю свой рабочий каталог, то есть: я удаляю все, что находится внутри него.
(Задачи, включенные в раздел предварительной сборки, будут выполнены до того, как CC.NET выведет последнюю версию вашего проекта из системы контроля версий).
Для этого я вызываю цель, определенную в моем buildscript (msbuild), которая называется «чистой».
Эта цель удаляет все файлы и каталоги.
Примерно так выглядит задача в моем сборочном скрипте msbuild (наизусть, у меня ее тут нет со мной):
<Task name="clean">
<ItemGroup>
<FilesToDelete include="$(workingdir)\**\*.*" />
</ItemGroup>
<ItemGroup>
<DirectoriesToDelete include="$(workingdir)\**" />
</ItemGroup>
<Delete Files="@(FilesToDelete)" />
<RemoveDir Directories="@(DirectoriesToDelete)" />
</Task>
Затем в конфигурации проекта CC.NET я вызываю скрипт MSBuild с помощью задачи MSBuild и называю эту цель.
Что мне нравится в этом, так это то, что я могу очень легко очистить свой рабочий каталог на своей рабочей станции; Мне просто нужно вызвать эту цель, используя вызов msbuild в командной строке, и мой рабочий каталог пуст.
У меня есть похожие задачи для выполнения getlatest, полной сборки и т. Д. ...