【问题标题】:How to Automate Publish using Cruise control and MsBuild如何使用 Cruise control 和 MsBuild 自动化发布
【发布时间】:2014-05-22 13:35:40
【问题描述】:

我尝试使用 Cruise Control、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>

这里给出了“ccnet.config”所指的我的“Build.xml”文件:

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

谁能告诉如何使用复制命令将构建 dll 从输出文件夹复制到 Publish/bin 文件夹,或者是否有任何其他方法可以使用 MsBuild 和 Cruise Control 发布文件。谢谢

【问题讨论】:

    标签: msbuild cruisecontrol.net


    【解决方案1】:

    您可以在 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\"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多