From 3e237a2fdc0c1954cfab4da6847d29037bf4ad64 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Mon, 30 Jan 2017 19:22:50 +0300 Subject: [PATCH] Prepare separate solution for XBuild --- .gitignore | 1 + build.cake | 32 +++++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d16287cfb4..37c7253a04 100644 --- a/.gitignore +++ b/.gitignore @@ -161,3 +161,4 @@ tools/ .nuget artifacts/ nuget +Avalonia.XBuild.sln \ No newline at end of file diff --git a/build.cake b/build.cake index 7d332d7bc0..7090b62bd8 100644 --- a/build.cake +++ b/build.cake @@ -42,7 +42,7 @@ var AssemblyInfoPath = File("./src/Shared/SharedAssemblyInfo.cs"); var ReleasePlatform = "Any CPU"; var ReleaseConfiguration = "Release"; var MSBuildSolution = "./Avalonia.sln"; -var XBuildSolution = "./Avalonia.sln"; +var XBuildSolution = "./Avalonia.XBuild.sln"; /////////////////////////////////////////////////////////////////////////////// // PARAMETERS @@ -593,9 +593,39 @@ Task("Clean") CleanDirectory(binRoot); CleanDirectory(testsRoot); }); +Task("Prepare-XBuild-Solution") + .Does(() => +{ + var blacklistedProjects = new[]{"Avalonia.Win32.NetStandard"}; + var blacklistedGuids = new HashSet(System.IO.File.ReadAllLines(MSBuildSolution) + .Where(l=>l.StartsWith("Project") && blacklistedProjects.Any(p=>l.Contains(p))) + .Select(l => l.Split(',').Select(part => part.Trim()).FirstOrDefault(part => part.StartsWith("\"{"))) + .Where(g=>g!=null) + .Select(l=>l.Trim(new[]{'"', '}', '{'}).ToLower()) + ); + Console.WriteLine("Blacklisted guids are: " + string.Join(",", blacklistedGuids)); + var removeUntilEndProject = false; + System.IO.File.WriteAllLines(XBuildSolution, System.IO.File.ReadAllLines(MSBuildSolution) + .Where(l => + { + if(removeUntilEndProject) + { + if(l.StartsWith("EndProject")) + removeUntilEndProject = false; + return false; + } + + var blacklist = blacklistedGuids.Any(g => l.ToLower().Contains(g)); + if(blacklist && l.StartsWith("Project")) + removeUntilEndProject = true; + + return !blacklist; + })); +}); Task("Restore-NuGet-Packages") .IsDependentOn("Clean") + .IsDependentOn("Prepare-XBuild-Solution") .Does(() => { var maxRetryCount = 5;