CruiseControl.Net Build Publisher-仅发布编译的文件

时间:2020-03-05 18:42:09  来源:igfitidea点击:

设置CruiseControl时,我向发布者任务添加了一个buildpublisher块:

<buildpublisher>
  <sourceDir>C:\MyBuild\</sourceDir>
  <publishDir>C:\MyBuildPublished\</publishDir>
  <alwaysPublish>false</alwaysPublish>
</buildpublisher>

这可行,但是它复制了构建的整个文件内容,我只想复制DLL和.aspx页面,不需要发布源代码。

有谁知道一种过滤此方法的方法,还是我需要设置一个任务来运行RoboCopy脚本?

解决方案

回答

我设置了一个任务来做到这一点。我不知道有什么方法可以使CruiseControl如此具体。我通常只链接一个批处理文件,以将其复制到CC.net任务中。

回答

CC.NET中的默认生成发布者没有提供执行此操作的方法。我们有几种选择:

  • 创建具有所需功能的自己的构建发布者
  • 创建一个自定义NAnt / MSBuild任务
  • 使用脚本技术(RoboCopy,批处理文件等)创建脚本文件并为CC.NET运行"可执行"任务,或者为NAnt / MSBuild运行" exec"任务

回答

我不确定Web项目,但是对于我们的winforms应用程序,我们可以像这样从MSBuild任务中获取TargetOutputs:

<MSBuild Projects="@(VSProjects)"
  Properties="Configuration=$(Configuration)">
  <Output TaskParameter="TargetOutputs" ItemName="BuildTargetOutputs"/>
</MSBuild>

然后进行复制:

<Copy SourceFiles="@(BuildTargetOutputs)" 
  DestinationFolder="bin"
  SkipUnchangedFiles="true" />

不确定目标输出是用于Web项目的,但是对于winforms和类库,它是.dll或者.exe。