如何使用Cruise控件和MsBuild自动发布

时间:2014-05-22 13:35:40

标签: msbuild cruisecontrol.net

我尝试使用巡航控制,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发布文件。感谢

1 个答案:

答案 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\"