Cruisecontrol.net和msbuild-如何在一个项目下构建多个解决方案?

Cruisecontrol.net和msbuild-如何在一个项目下构建多个解决方案?,msbuild,cruisecontrol.net,Msbuild,Cruisecontrol.net,因此,我的应用程序由33个项目组成,其中超过一半的项目具有相互依赖性。我正在使用CruiseControl.NET1.6。我可以建立一个单一的csproj或sln的罚款,但当我添加更多的标签,它炸弹。如何强制生成多个csproj文件?sdf <msbuild> <executable>c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe</executable> &l

因此,我的应用程序由33个项目组成,其中超过一半的项目具有相互依赖性。我正在使用CruiseControl.NET1.6。我可以建立一个单一的csproj或sln的罚款,但当我添加更多的标签,它炸弹。如何强制生成多个csproj文件?sdf

      <msbuild>
    <executable>c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe</executable>
    <workingDirectory>C:\Program Files\CruiseControl.NET\server\MA_Release</workingDirectory>

    <projectFile>WorksFineWith1.sln</projectFile>
    <projectFile>ErrorsOutWithMoreThan1.sln</projectFile>

    <buildArgs>/noconsolelogger /p:Configuration=Debug</buildArgs>
    <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
    <timeout>900</timeout>
  </msbuild>

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
C:\Program Files\CruiseControl.NET\server\MA\U版本
使用1.sln工作
错误超过1.sln
/noconsolelogger/p:Configuration=Debug
C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll
900

如何使用一个强制构建来构建多个任务?

使用多个
任务,您可以在
中拥有所需的任意多个任务。

使用多个
任务,您可以在
中拥有所需的任意多个任务。

另一个选项是允许MSBuild通过遍历项目来处理此问题。这里有一篇关于构建大型源代码树和使用MSBuild遍历的伟大MSDN文章:


另一个选项是允许MSBuild通过遍历项目处理此问题。这里有一篇关于构建大型源代码树和使用MSBuild遍历的伟大MSDN文章:


其他答案很好,但我更喜欢根据单个解决方案文件构建CI,该文件与开发人员每天使用的解决方案文件完全相同。这样,将破坏构建的项目/解决方案更改将反映在开发人员的工作环境中

如果您有多个单独的解决方案文件,那么只需将它们设置为不同的项目,并使用
ProjectTrigger
来表示依赖项


其他答案很好,但我更喜欢根据单个解决方案文件构建CI,该文件与开发人员每天使用的解决方案文件完全相同。这样,将破坏构建的项目/解决方案更改将反映在开发人员的工作环境中

如果您有多个单独的解决方案文件,那么只需将它们设置为不同的项目,并使用
ProjectTrigger
来表示依赖项


坦率地说,我认为解决方案文件在大型源代码管理系统中变得笨拙,如果开发人员能够加载他们关心的项目来工作,他们的生产率就会提高。将构建系统与解决方案文件分离有助于实现这一点。就我的20美分。我在这件事上遇到了双方的人。@Nick-我同意。需要拆分包含30-50个以上项目的解决方案。有那么多单独构建步骤的CI环境同样存在问题,因为我不知道他的配置,所以我提到了单个解决方案文件,以及带有项目触发器的多个解决方案文件。目前,我们的开发团队为每个项目(共33个项目)使用单独的SLN 25个SLN。我同意你的理念,即为整个应用程序使用一个SLN,这会让我作为构建经理的生活更轻松,但会让开发团队不高兴。@more WYSIWG-作为构建经理,你可以两者兼而有之,我在一个这样做的地方工作,bm构建了自己的解决方案,并在添加新项目时将其同步。尽管如此,这么小的项目的许多解决方案对我来说似乎有点让开发人员痛苦,但我想这取决于团队的结构和应用程序的组件化。坦率地说,我认为解决方案文件在大型源代码管理系统中变得难以处理,如果开发人员能够加载他们关心的项目来工作,他们的生产力就会提高。将构建系统与解决方案文件分离有助于实现这一点。就我的20美分。我在这件事上遇到了双方的人。@Nick-我同意。需要拆分包含30-50个以上项目的解决方案。有那么多单独构建步骤的CI环境同样存在问题,因为我不知道他的配置,所以我提到了单个解决方案文件,以及带有项目触发器的多个解决方案文件。目前,我们的开发团队为每个项目(共33个项目)使用单独的SLN 25个SLN。我同意你的理念,即为整个应用程序使用一个SLN,这会让我作为构建经理的生活更轻松,但会让开发团队不高兴。@more WYSIWG-作为构建经理,你可以两者兼而有之,我在一个这样做的地方工作,bm构建了自己的解决方案,并在添加新项目时将其同步。尽管如此,这么小的项目的许多解决方案对我来说似乎有点让开发人员头疼,但我想这取决于团队的结构和应用程序的组件化。