如何使用Cruisecontrol.net中的解决方案文件从TFS获取最新的变更集版本?

时间:2012-06-11 08:01:06

标签: tfs cruisecontrol.net

我正在尝试使用CC.NET和TFS设置构建服务器。在我当前的工作场所,项目文件位于不同的文件夹中,而不是在同一个根文件夹中。我们正在使用位于不同位置的一些遗留代码,这些代码在许多项目中共享。解决方案文件知道所有目录的确切位置。

在ccnet.config文件的源代码控制部分中,只有一个选项可以指定工作目录以获取最新版本。因为如果任何代码更改到其他目录,则工作目录不会更新,并且每次构建都会失败。

有没有办法获得解决方案文件中指定的所有文件夹的最新版本并使用msbuild构建?

<sourcecontrol type="vsts" autoGetSource="true" applyLabel="false">
    <server>http://tfsserver/</server>
    <username></username>
    <password></password>
    <domain></domain>
    <workspace></workspace>
    <project>projectlocation</project>
    <workingDirectory>workingdirectory</workingDirectory>
</sourcecontrol>

如果我的方向错误,请指导我做正确的方法。谢谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用multi类型的源代码管理:

<sourcecontrol type="multi">
        <sourceControls>
            <filtered>
                <sourcecontrol type="vsts" autoGetSource="true" applyLabel="false">
                    <server>http://tfsserver/</server>
                    <username></username>
                    <password></password>
                    <domain></domain>
                    <workspace></workspace>
                    <project>projectlocation</project>
                    <workingDirectory>workingdirectory</workingDirectory>
                </sourcecontrol>
            </filtered>
            <filtered>
                <sourcecontrol type="vsts" autoGetSource="true" applyLabel="false">
                ...
                </sourcecontrol>
            </filtered>
        </sourcecontrols>
    </sourcecontrol>

更新:另一种方法是使用一个工作区,然后使用不同的<task><workingdirectory>进行多次<projectfile>次调用:

<project name "X">
    <sourcecontrol type="vsts" autoGetSource="true" applyLabel="false">
        ...
    </sourcecontrol>
    <task>
        <msbuild>
          <workingDirectory>C:\dev\folder1</workingDirectory>
          <projectFile>solution1.sln</projectFile>
          ...
        </msbuild>
        <msbuild>
          <workingDirectory>C:\dev\folder2</workingDirectory>
          <projectFile>solution2.sln</projectFile>
          ...
        </msbuild>
        ...
    </task>
</project>

答案 1 :(得分:0)

无法让CruiseControl.NET读取您的解决方案文件,只更新该解决方案中使用的工作目录。您必须在CruiseControl.NET中单独管理工作目录列表。

如果您熟悉脚本,则可以解析所需路径的解决方案文件,并生成正确的CCNet配置文件。