2

我正在尝试使用 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>

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

4

2 回答 2

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>

更新:另一种方法是使用一个工作区,然后使用不同的and进行多次<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>
于 2012-06-11T08:15:34.420 回答
0

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

如果您喜欢编写脚本,您可以解析您的解决方案文件以获取所需的路径,并生成正确的、所需的 CCNet 配置文件。

于 2012-06-12T01:16:28.113 回答