CruiseControl.Net Build Publisher - 仅发布编译文件
-
09-06-2019 - |
题
在设置 CruiseControl 时,我向发布者任务添加了一个 buildpublisher 块:
<buildpublisher>
<sourceDir>C:\MyBuild\</sourceDir>
<publishDir>C:\MyBuildPublished\</publishDir>
<alwaysPublish>false</alwaysPublish>
</buildpublisher>
这是可行的,但它复制了构建的整个文件内容,我只想复制 DLL 和 .aspx 页面,我不需要发布源代码。
有谁知道过滤此内容的方法,或者我是否需要设置一个任务来运行 RoboCopy 脚本?
解决方案
我设置了一个任务来执行此操作。我不知道有什么方法可以使 CruiseControl 变得那么具体。我通常只是链接一个批处理文件来复制到 CC.net 任务。
其他提示
我不确定 Web 项目,但对于我们的 winforms 应用程序,您可以从 MSBuild 任务中获取 TargetOutputs,如下所示:
<MSBuild Projects="@(VSProjects)"
Properties="Configuration=$(Configuration)">
<Output TaskParameter="TargetOutputs" ItemName="BuildTargetOutputs"/>
</MSBuild>
然后进行复制:
<Copy SourceFiles="@(BuildTargetOutputs)"
DestinationFolder="bin"
SkipUnchangedFiles="true" />
不确定 Web 项目的 TargetOutputs 是什么,但对于 winforms 和类库,它是 .dll 或 .exe。
CC.NET 中的默认构建发布者不提供执行此操作的方法。您有几个选择:
- 创建您自己的具有所需功能的构建发布者
- 创建自定义 NAnt/MSBuild 任务
- 使用脚本技术(RoboCopy、批处理文件等)创建脚本文件并运行 CC.NET 的“可执行”任务,或 NAnt/MSBuild 的“exec”任务
CC.Net Powershell 任务也可用于此目的。
不隶属于 StackOverflow