使用Cake(C#make)在树中构建所有解决方案?

时间:2017-04-12 15:15:21

标签: c# msbuild cakebuild

我在同一目录树中有多个VS解决方案,并希望使用Cake构建所有这些解决方案。有没有办法构建所有这些方法而不将它们逐个放入构建脚本中?

感谢您的任何想法

1 个答案:

答案 0 :(得分:7)

是的,当然可以使用内置的globber功能,例如:

var solutions           = GetFiles("./**/*.sln");

Task("Build")
    .IsDependentOn("Clean")
    .IsDependentOn("Restore")
    .Does(() =>
{
    // Build all solutions.
    foreach(var solution in solutions)
    {
        Information("Building {0}", solution);
        MSBuild(solution, settings =>
            settings.SetPlatformTarget(PlatformTarget.MSIL)
                .WithProperty("TreatWarningsAsErrors","true")
                .WithTarget("Build")
                .SetConfiguration(configuration));
    }
});

类似地,您可以在使用nuget restore构建之前执行相同的操作,例如

Task("Restore")
    .Does(() =>
{
    // Restore all NuGet packages.
    foreach(var solution in solutions)
    {
        Information("Restoring {0}...", solution);
        NuGetRestore(solution);
    }
});

一个干净的任务可以像这样适应

var solutionPaths       = solutions.Select(solution => solution.GetDirectory());

Task("Clean")
    .Does(() =>
{
    // Clean solution directories.
    foreach(var path in solutionPaths)
    {
        Information("Cleaning {0}", path);
        CleanDirectories(path + "/**/bin/" + configuration);
        CleanDirectories(path + "/**/obj/" + configuration);
    }
});
相关问题