我尝试使用巡航控制,SVN和Ms build自动化更新,构建和发布。从svn存储库获取更新并且构建工作正常但是发布时间,在bin文件夹中只有项目dll即将到来,但是其他dll如'system.web','Newtonsoft.Json'等等以及更多dll都没有更新。我的'ccnet.config'文件是:
<cruisecontrol xmlns:cb="urn:ccnet.config.builder" xmlns="http://thoughtworks.org/ccnet/1/8">
<project name="MyProjectBuild" queue="Q1" queuepriority="1">
<sourcecontrol type="svn">
<trunkurl>https://ip/svn//trunk/CruiseControlTest</trunkurl>
<workingdirectory>F:\CruiseControlPOC\src</workingdirectory>
<username>username</username>
<password>password</password>
</sourcecontrol>
<tasks>
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingdirectory>F:\CruiseControlPOC\BuildScript\</workingdirectory>
<projectfile>Build.xml</projectfile>
</msbuild>
</tasks>
</project>
</cruisecontrol>
我的'build.xml'文件'ccnet.config'引用了这里:
<target name="Run">
<calltarget targets="Compile" />
<calltarget targets="DoPublish" />
</target>
<target name="Compile">
<msbuild projects="..\src\HelloWorld\HelloWorld.sln" />
</target>
<target name="DoPublish">
<msbuild projects="..\src\HelloWorld\HelloWorld\HelloWorld.csproj" targets="_CopyWebApplication;_BuiltWebOutputGroupOutput" properties="OutDir=..\Output\;WebProjectOutputDir=..\..\..\Publish\HelloWorldSite\;"> </msbuild>
<copy sourcefiles="..\Output\" destinationfolder="..\Publish\HelloWorldSite\bin\"> </copy>
</target>
任何人都可以告诉如何使用复制命令将build dll从Output文件夹复制到Publish / bin文件夹,或者还有其他任何使用MsBuild和Cruise Control发布文件。感谢
答案 0 :(得分:0)
您可以在ccnet.config中的MSBuild任务之后添加另一个任务,以便在构建之后调用Power Shell脚本,如下所示:
<exec>
<executable>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</executable>
<baseDirectory>D:\Tools</baseDirectory>
<buildArgs>-File "D:\Tools\ProgramNamePostBuildTasks.ps1"</buildArgs>
<buildTimeoutSeconds>600</buildTimeoutSeconds>
</exec>
然后在您的powershell脚本中,您可以使用xcopy将文件复制到任何您想要的位置。如果要将文件复制到服务器,则需要先将连接映射到服务器。但这是一个关于powershell脚本外观的简单示例:
del "D:\Binfolder\*.*"
xcopy "D:\OutputDirectory\ProgramX.dll" "D:\BinFolder\"