Question: On my local machine I have checked out a web application and then compiled it with MSBuild, and then pre-compiled and deployed it with the aspnet\_compiler. The command line looks like:

```
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>aspnet_compiler.exe -v / -p C:\<Some Dir> -u C:\<Some Target Dir> -f

```

This works fine locally in testing, meaning the pre-compiled website gets copied to the target directory without copying any .svn directories to it. However, on a remote machine where I have scripted the build for CC.Net, the .svn directories do get copied over. Running the command line manually for the aspnet\_compiler gives the same results (copies over the .svn folders):

```
D:\Program Files\Microsoft Visual Studio 10.0\VC>aspnet_compiler.exe -v / -p D:\<Some Dir> -u D:\<Some Target Dir> -f 

```

In both instances I am running from the x86 VS tools prompt. Any idea why there is different behavior?

Answer: 
If you are using CCNet, I would suggest telling it to SVN export rather than check out. That will get around the issue. You shouldn't have any VCS crud in your build source when doing an integration build really.

You will have to call the svn command line client directly in CCNet rather than doing an svn scm block.

This has always annoyed the hell out of me which is why I use TeamCity now (which does this fine).

A small hunch has been that when using TortoiseSVN, it creates the .svn folders as hidden but when CCNet calls svn.exe it doesn't hide the folders. I think the aspnet\_compiler is sensitive to that.
you can publish the code like this which will remove all svn files

```
<Project
        xmlns = "http://schemas.microsoft.com/developer/msbuild/2003"
        name = "AspNetPreCompile"
        DefaultTargets = "PrecompileWeb">
        <Target Name = "PrecompileWeb">
                <AspNetCompiler
                        VirtualPath = "DeployTemp" 
                        PhysicalPath = "Physical source path"
                        TargetPath = "Physical target path"
                        Force = "true"
                        Debug = "false"
                        Updateable = "true"/>
        </Target>
</Project>

```

or you can use like this which remove all svn files recursively

```
<Project
        xmlns = "http://schemas.microsoft.com/developer/msbuild/2003"
        name = "AspNetPreCompile"
        DefaultTargets = "build">

    <ItemGroup>
        <FilesToCopy Include="C:\ProjectWorkingDirectories\YourWebsite\Source\**\*.*" Exclude="C:\ProjectWorkingDirectories\YourWebsite\Source\**\.svn\**"/>
    </ItemGroup>

    <Target Name = "build">
        <CallTarget Targets="PrecompileWeb"/>       
        <CallTarget Targets="CopyFiles"/>       
    </Target>

    <Target Name = "PrecompileWeb">
                <AspNetCompiler
                        VirtualPath = "/Source" 
                        PhysicalPath ="C:\ProjectWorkingDirectories\YourWebsite\Source"/>                     
        </Target>

    <Target Name = "CopyFiles">                
        <Copy SourceFiles="@(FilesToCopy)" DestinationFiles="@(FilesToCopy->'C:\TempProjectPublish\YourWebsite\YourWebsite\%(RecursiveDir)\%(Filename)%(Extension)')" ContinueOnError="true"/>
        </Target>

</Project>

```