Как компилятор ASP.Net исключить каталоги .svn при развертывании - PullRequest
0 голосов
/ 01 августа 2011

На моей локальной машине я проверил веб-приложение, затем скомпилировал его с помощью 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.Есть идеи, почему существует другое поведение?

Ответы [ 3 ]

1 голос
/ 01 августа 2011

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

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

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

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

0 голосов
/ 02 августа 2011

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

0 голосов
/ 01 августа 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>
...