Как компилятор ASP.Net может исключить каталоги .svn при развертывании

На своем локальном компьютере я проверил веб-приложение, затем скомпилировал его с помощью MSBuild, а затем предварительно скомпилировал и развернул его с помощью aspnet_compiler. Командная строка выглядит так:

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

Это отлично работает локально при тестировании, то есть предварительно скомпилированный веб-сайт копируется в целевой каталог без копирования в него каких-либо каталогов .svn. Однако на удаленном компьютере, на котором я написал сценарий сборки для CC.Net, каталоги .svn копируются. Запуск командной строки вручную для aspnet_compiler дает те же результаты (копии в папках .svn):

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

В обоих случаях я запускаю из командной строки x86 VS tools. Есть идеи, почему такое поведение?


person davecoulter    schedule 31.07.2011    source источник


Ответы (3)


Если вы используете CCNet, я бы посоветовал сообщить об этом экспорту SVN, а не проверять. Это решит проблему. При выполнении интеграционной сборки в исходном коде сборки не должно быть никаких VCS.

Вам нужно будет вызвать клиент командной строки svn непосредственно в CCNet, а не выполнять блок svn scm.

Это всегда чертовски меня раздражало, поэтому сейчас я использую TeamCity (который отлично справляется).

Небольшая догадка заключалась в том, что при использовании TortoiseSVN он создает папки .svn как скрытые, но когда CCNet вызывает svn.exe, он не скрывает папки. Я думаю, что aspnet_compiler чувствителен к этому.

person Deleted    schedule 31.07.2011

вы можете опубликовать такой код, который удалит все файлы svn

<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>

или вы можете использовать это, которое рекурсивно удаляет все файлы svn

<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>
person Mahesh KP    schedule 01.08.2011

Спасибо за ответы. Оказывается, я смог просто уничтожить сам репозиторий svn, перепроверить его и запустить aspnet_compiler, который решил проблему.

person davecoulter    schedule 02.08.2011