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

问题描述:

我在同一目录树中有多个VS解决方案,并希望使用Cake来构建它们。有没有一种方法可以在不将它们逐一放入构建脚本的情况下构建它们?使用Cake(C#make)在树中构建所有解决方案?

感谢您的任何想法

是的,这当然可以使用内置的通配符处理功能,例如:

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恢复,例如

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); 
    } 
});