/////////////////////////////////////////////////////////////////////////////// // ARGUMENTS /////////////////////////////////////////////////////////////////////////////// var target = Argument("target", "Default"); var configuration = Argument("configuration", "Release"); /////////////////////////////////////////////////////////////////////////////// // GLOBAL VARIABLES /////////////////////////////////////////////////////////////////////////////// var solutions = GetFiles("./**/*.sln"); var solutionPaths = solutions.Select(solution => solution.GetDirectory()); /////////////////////////////////////////////////////////////////////////////// // SETUP / TEARDOWN /////////////////////////////////////////////////////////////////////////////// Setup(() => { // Executed BEFORE the first task. Information("Running tasks..."); }); Teardown(() => { // Executed AFTER the last task. Information("Finished running tasks."); }); /////////////////////////////////////////////////////////////////////////////// // TASK DEFINITIONS /////////////////////////////////////////////////////////////////////////////// Task("Clean") .Does(() => { // Clean solution directories. foreach(var path in solutionPaths) { Information("Cleaning {0}", path); CleanDirectories(path + "/**/bin/" + configuration); CleanDirectories(path + "/**/obj/" + configuration); } }); Task("Restore") .Does(() => { // Restore all NuGet packages. foreach(var solution in solutions) { Information("Restoring {0}...", solution); NuGetRestore(solution); } }); 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)); } }); /////////////////////////////////////////////////////////////////////////////// // TARGETS /////////////////////////////////////////////////////////////////////////////// Task("Default") .IsDependentOn("Build"); /////////////////////////////////////////////////////////////////////////////// // EXECUTION /////////////////////////////////////////////////////////////////////////////// RunTarget(target);