2011-07-31 79 views
0

在我的本地機器上,我檢出了一個Web應用程序,然後使用MSBuild編譯它,然後使用aspnet_compiler預編譯並部署它。命令行的樣子:ASP.Net編譯器如何排除部署中的.svn目錄

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工具提示符下運行兩個實例。任何想法爲什麼有不同的行爲?

回答

0

感謝您的答覆。事實證明,我能夠僅僅覈實svn倉庫本身並重新檢查它並運行解決問題的aspnet_compiler。

1

如果您使用CCNet,我會建議告訴它到SVN導出而不是檢出。這將解決這個問題。實際進行集成構建時,您的構建源中不應該有任何VCS碎裂。

您必須直接在CCNet中調用svn命令行客戶端,而不是執行svn scm塊。

這總是讓我非常惱火,這就是爲什麼我現在使用TeamCity(這樣做很好)。

當使用TortoiseSVN時,它會創建隱藏的.svn文件夾,但當CCNet調用svn.exe時,它不會隱藏文件夾。我認爲aspnet_compiler對此很敏感。

0

你可以發佈這樣的代碼,這將刪除所有文件的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>