I don't know if SVN works in a similar fashion like TFS (it has a cache and so on ... ), but here is how I do this with CC.NET and Sourcesafe:
In the prebuild section of my project, I make sure that I clean my working directory, that is: I delete everything that is inside it.
(The tasks that are included in the prebuild section, will be executed before CC.NET will get the latest version of your project out of source-control).
To accomplish this, I call a Target that is defined in my buildscript (msbuild) which is called 'clean'.
This target removes all files and directories.
This is more or less how the task in my msbuild buildscript looks like (by heart, I don't have it right here with me):
<Task name="clean">
<ItemGroup>
<FilesToDelete include="$(workingdir)\**\*.*" />
</ItemGroup>
<ItemGroup>
<DirectoriesToDelete include="$(workingdir)\**" />
</ItemGroup>
<Delete Files="@(FilesToDelete)" />
<RemoveDir Directories="@(DirectoriesToDelete)" />
</Task>
Then, in the CC.NET project configuration, I call the MSBuild script using the MSBuild task, and i call this target.
What I like about this, is that I can clean my working directory on my workstation very easily as well; I just have to call this target using a call to msbuild on the commandline, and my working dir is empty.
I've similar tasks to perform a getlatest, complete build, etc... as well.