我在同一目录树中有多个VS解决方案,并希望使用Cake构建所有这些解决方案。有没有办法构建所有这些方法而不将它们逐个放入构建脚本中?
感谢您的任何想法
答案 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);
}
});