async Task CheckSolutionBuildClean(Solution sol, string configuration) { SolutionConfigurationSelector config = (SolutionConfigurationSelector)configuration; string tag = "CheckSolutionBuildClean config=" + configuration; DotNetProject lib1 = (DotNetProject)sol.FindProjectByName("Lib1"); DotNetProject lib2 = (DotNetProject)sol.FindProjectByName("Lib2"); DotNetProject lib3 = (DotNetProject)sol.FindProjectByName("Lib3"); DotNetProject lib4 = (DotNetProject)sol.FindProjectByName("Lib4"); Assert.IsFalse(File.Exists(lib1.GetOutputFileName(config)), tag); Assert.IsFalse(File.Exists(lib2.GetOutputFileName(config)), tag); Assert.IsFalse(File.Exists(lib3.GetOutputFileName(config)), tag); Assert.IsFalse(File.Exists(lib4.GetOutputFileName(config)), tag); BuildResult res = await sol.Build(Util.GetMonitor(), config); Assert.AreEqual(0, res.WarningCount, tag); Assert.AreEqual(0, res.ErrorCount, tag); Assert.IsTrue(File.Exists(lib1.GetOutputFileName(config)), tag); Assert.IsTrue(File.Exists(lib2.GetOutputFileName(config)), tag); Assert.IsTrue(File.Exists(lib3.GetOutputFileName(config)), tag); Assert.IsTrue(File.Exists(lib4.GetOutputFileName(config)), tag); await sol.Clean(Util.GetMonitor(), config); Assert.IsFalse(File.Exists(lib1.GetOutputFileName(config)), tag); Assert.IsFalse(File.Exists(lib2.GetOutputFileName(config)), tag); Assert.IsFalse(File.Exists(lib3.GetOutputFileName(config)), tag); Assert.IsFalse(File.Exists(lib4.GetOutputFileName(config)), tag); }
void CheckProjectReferencesBuildClean(Solution sol, string configuration) { SolutionConfigurationSelector config = (SolutionConfigurationSelector)configuration; string tag = "CheckProjectReferencesBuildClean config=" + configuration; DotNetProject lib1 = (DotNetProject)sol.FindProjectByName("Lib1"); DotNetProject lib2 = (DotNetProject)sol.FindProjectByName("Lib2"); DotNetProject lib3 = (DotNetProject)sol.FindProjectByName("Lib3"); DotNetProject lib4 = (DotNetProject)sol.FindProjectByName("Lib4"); Assert.IsFalse(File.Exists(lib1.GetOutputFileName(config)), tag); Assert.IsFalse(File.Exists(lib2.GetOutputFileName(config)), tag); Assert.IsFalse(File.Exists(lib3.GetOutputFileName(config)), tag); Assert.IsFalse(File.Exists(lib4.GetOutputFileName(config)), tag); BuildResult res = lib1.Build(Util.GetMonitor(), config, true); Assert.AreEqual(0, res.WarningCount, tag); Assert.AreEqual(0, res.ErrorCount, tag + " " + res.CompilerOutput); Assert.IsTrue(File.Exists(lib1.GetOutputFileName(config)), tag); Assert.IsTrue(File.Exists(lib2.GetOutputFileName(config)), tag); Assert.IsTrue(File.Exists(lib3.GetOutputFileName(config)), tag); Assert.IsTrue(File.Exists(lib4.GetOutputFileName(config)), tag); sol.Clean(Util.GetMonitor(), config); }
public void NeedsBuilding () { string solFile = Util.GetSampleProject ("console-with-libs-mdp", "console-with-libs-mdp.mds"); Solution sol = (Solution) Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile); DotNetProject p = (DotNetProject) sol.FindProjectByName ("console-with-libs-mdp"); Assert.IsNotNull (p); DotNetProject lib1 = (DotNetProject) sol.FindProjectByName ("library1"); Assert.IsNotNull (lib1); DotNetProject lib2 = (DotNetProject) sol.FindProjectByName ("library2"); Assert.IsNotNull (lib2); SolutionConfigurationSelector config = (SolutionConfigurationSelector) "Debug"; Assert.IsTrue (p.NeedsBuilding (config)); Assert.IsTrue (lib1.NeedsBuilding (config)); Assert.IsTrue (lib2.NeedsBuilding (config)); // Build the project and the references BuildResult res = p.Build (Util.GetMonitor (), config, true); foreach (BuildError er in res.Errors) Console.WriteLine (er.ToString ()); Assert.AreEqual (0, res.ErrorCount); Assert.AreEqual (0, res.WarningCount); Assert.AreEqual (3, res.BuildCount); Assert.IsFalse (p.NeedsBuilding (config)); Assert.IsFalse (lib1.NeedsBuilding (config)); Assert.IsFalse (lib2.NeedsBuilding (config)); Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", "console-with-libs-mdp.exe"))); Assert.IsTrue (File.Exists (Util.Combine (p.BaseDirectory, "bin", "Debug", GetMdb ("console-with-libs-mdp.exe")))); Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", "library1.dll"))); Assert.IsTrue (File.Exists (Util.Combine (lib1.BaseDirectory, "bin", "Debug", GetMdb ("library1.dll")))); Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", "library2.dll"))); Assert.IsTrue (File.Exists (Util.Combine (lib2.BaseDirectory, "bin", "Debug", GetMdb ("library2.dll")))); // Build the project, but not the references p.SetNeedsBuilding (true); lib1.SetNeedsBuilding (true); lib2.SetNeedsBuilding (true); Assert.IsTrue (p.NeedsBuilding (config)); Assert.IsTrue (lib1.NeedsBuilding (config)); Assert.IsTrue (lib2.NeedsBuilding (config)); res = p.Build (Util.GetMonitor (), config, false); Assert.AreEqual (0, res.ErrorCount); Assert.AreEqual (0, res.WarningCount); Assert.AreEqual (1, res.BuildCount); Assert.IsTrue (p.NeedsBuilding (config)); // True because references require building Assert.IsTrue (lib1.NeedsBuilding (config)); Assert.IsTrue (lib2.NeedsBuilding (config)); }
public async Task NeedsBuilding() { string solFile = Util.GetSampleProject("console-with-libs", "console-with-libs.sln"); Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); DotNetProject p = (DotNetProject)sol.FindProjectByName("console-with-libs"); Assert.IsNotNull(p); DotNetProject lib1 = (DotNetProject)sol.FindProjectByName("library1"); Assert.IsNotNull(lib1); DotNetProject lib2 = (DotNetProject)sol.FindProjectByName("library2"); Assert.IsNotNull(lib2); SolutionConfigurationSelector config = (SolutionConfigurationSelector)"Debug"; #pragma warning disable 618 Assert.IsTrue(p.NeedsBuilding(config)); Assert.IsTrue(lib1.NeedsBuilding(config)); Assert.IsTrue(lib2.NeedsBuilding(config)); #pragma warning restore 618 // Build the project and the references BuildResult res = await p.Build(Util.GetMonitor(), config, true); foreach (BuildError er in res.Errors) { Console.WriteLine(er); } Assert.AreEqual(0, res.ErrorCount); Assert.AreEqual(0, res.WarningCount); Assert.AreEqual(3, res.BuildCount); Assert.IsTrue(File.Exists(Util.Combine(p.BaseDirectory, "bin", "Debug", "console-with-libs.exe"))); Assert.IsTrue(File.Exists(Util.Combine(p.BaseDirectory, "bin", "Debug", GetMdb(p, "console-with-libs.exe")))); Assert.IsTrue(File.Exists(Util.Combine(lib1.BaseDirectory, "bin", "Debug", "library1.dll"))); Assert.IsTrue(File.Exists(Util.Combine(lib1.BaseDirectory, "bin", "Debug", GetMdb(lib1, "library1.dll")))); Assert.IsTrue(File.Exists(Util.Combine(lib2.BaseDirectory, "bin", "Debug", "library2.dll"))); Assert.IsTrue(File.Exists(Util.Combine(lib2.BaseDirectory, "bin", "Debug", GetMdb(lib2, "library2.dll")))); // Build the project, but not the references res = await p.Build(Util.GetMonitor(), config, false); Assert.AreEqual(0, res.ErrorCount); Assert.AreEqual(0, res.WarningCount); Assert.AreEqual(1, res.BuildCount); sol.Dispose(); }
void CheckProjectBuildClean (DotNetProject lib, string configuration) { SolutionConfigurationSelector config = (SolutionConfigurationSelector) configuration; string tag = "CheckProjectBuildClean lib=" + lib.Name + " config=" + configuration; Assert.IsFalse (File.Exists (lib.GetOutputFileName (config)), tag); BuildResult res = lib.Build (Util.GetMonitor (), config, false); Assert.AreEqual (0, res.WarningCount, tag); Assert.AreEqual (0, res.ErrorCount, tag); Assert.IsTrue (File.Exists (lib.GetOutputFileName (config)), tag); lib.Clean (Util.GetMonitor (), config); Assert.IsFalse (File.Exists (lib.GetOutputFileName (config)), tag); }
public async Task FastBuildCheckWithLibrary() { string solFile = Util.GetSampleProject("fast-build-test", "FastBuildTest.sln"); Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); var app = (DotNetProject)sol.Items [0]; var lib = (DotNetProject)sol.Items [1]; var cs = new SolutionConfigurationSelector("Debug"); Assert.IsTrue(app.FastCheckNeedsBuild(cs)); Assert.IsTrue(lib.FastCheckNeedsBuild(cs)); var res = await sol.Build(Util.GetMonitor(), cs); Assert.IsFalse(res.HasErrors); Assert.IsFalse(app.FastCheckNeedsBuild(cs)); Assert.IsFalse(lib.FastCheckNeedsBuild(cs)); var myClass = sol.ItemDirectory.Combine("MyClass.cs"); File.WriteAllText(myClass, "public class MyClass { public const string Message = \"Bye\" ; }"); FileService.NotifyFileChanged(myClass); Assert.IsTrue(app.FastCheckNeedsBuild(cs)); Assert.IsTrue(lib.FastCheckNeedsBuild(cs)); res = await lib.Build(Util.GetMonitor(), cs); Assert.IsFalse(res.HasErrors); Assert.IsFalse(lib.FastCheckNeedsBuild(cs)); Assert.IsTrue(app.FastCheckNeedsBuild(cs)); res = await app.Build(Util.GetMonitor(), cs); Assert.IsFalse(res.HasErrors); Assert.IsFalse(lib.FastCheckNeedsBuild(cs)); Assert.IsFalse(app.FastCheckNeedsBuild(cs)); sol.Dispose(); }
public int Run (string[] arguments) { Console.WriteLine ("MonoDevelop Build Tool"); foreach (string s in arguments) ReadArgument (s); if (help) { Console.WriteLine ("build [options] [build-file]"); Console.WriteLine ("-p --project:PROJECT Name of the project to build."); Console.WriteLine ("-t --target:TARGET Name of the target: Build or Clean."); Console.WriteLine ("-c --configuration:CONFIGURATION Name of the solution configuration to build."); Console.WriteLine ("-r --runtime:PREFIX Prefix of the Mono runtime to build against."); Console.WriteLine (); Console.WriteLine ("Supported targets:"); Console.WriteLine (" {0}: build the project (the default target).", ProjectService.BuildTarget); Console.WriteLine (" {0}: clean the project.", ProjectService.CleanTarget); Console.WriteLine (); return 0; } string solFile = null; string itemFile = null; if (file == null) { string[] files = Directory.GetFiles ("."); foreach (string f in files) { if (Services.ProjectService.IsWorkspaceItemFile (f)) { solFile = f; break; } else if (itemFile == null && Services.ProjectService.IsSolutionItemFile (f)) itemFile = f; } if (solFile == null && itemFile == null) { Console.WriteLine ("Project file not found."); return 1; } } else { if (Services.ProjectService.IsWorkspaceItemFile (file)) solFile = file; else if (Services.ProjectService.IsSolutionItemFile (file)) itemFile = file; else { Console.WriteLine ("File '{0}' is not a project or solution.", file); return 1; } } ConsoleProgressMonitor monitor = new ConsoleProgressMonitor (); TargetRuntime targetRuntime = null; TargetRuntime defaultRuntime = Runtime.SystemAssemblyService.DefaultRuntime; if (runtime != null) { targetRuntime = MonoTargetRuntimeFactory.RegisterRuntime(new MonoRuntimeInfo(runtime)); if (targetRuntime != null) Runtime.SystemAssemblyService.DefaultRuntime = targetRuntime; } IBuildTarget item; if (solFile != null) item = Services.ProjectService.ReadWorkspaceItem (monitor, solFile); else item = Services.ProjectService.ReadSolutionItem (monitor, itemFile); if (project != null) { Solution solution = item as Solution; item = null; if (solution != null) { item = solution.FindProjectByName (project); } if (item == null) { Console.WriteLine ("The project '" + project + "' could not be found in " + file); return 1; } } IConfigurationTarget configTarget = item as IConfigurationTarget; if (config == null && configTarget != null) config = configTarget.DefaultConfigurationId; ConfigurationSelector configuration; if (item is SolutionEntityItem) configuration = new ItemConfigurationSelector (config); else configuration = new SolutionConfigurationSelector (config); monitor = new ConsoleProgressMonitor (); BuildResult res = item.RunTarget (monitor, command, configuration); if (targetRuntime != null) { Runtime.SystemAssemblyService.DefaultRuntime = defaultRuntime; MonoTargetRuntimeFactory.UnregisterRuntime((MonoTargetRuntime) targetRuntime); } return (res == null || res.ErrorCount == 0) ? 0 : 1; }
public int Run(string[] arguments) { Console.WriteLine("MonoDevelop Build Tool"); foreach (string s in arguments) { ReadArgument(s); } if (help) { Console.WriteLine("build [options] [build-file]"); Console.WriteLine("-p --project:PROJECT Name of the project to build."); Console.WriteLine("-t --target:TARGET Name of the target: Build or Clean."); Console.WriteLine("-c --configuration:CONFIGURATION Name of the solution configuration to build."); Console.WriteLine(); Console.WriteLine("Supported targets:"); Console.WriteLine(" {0}: build the project (the default target).", ProjectService.BuildTarget); Console.WriteLine(" {0}: clean the project.", ProjectService.CleanTarget); Console.WriteLine(); return(0); } string solFile = null; string itemFile = null; if (file == null) { string[] files = Directory.GetFiles("."); foreach (string f in files) { if (Services.ProjectService.IsWorkspaceItemFile(f)) { solFile = f; break; } else if (itemFile == null && Services.ProjectService.IsSolutionItemFile(f)) { itemFile = f; } } if (solFile == null && itemFile == null) { Console.WriteLine("Project file not found."); return(1); } } else { if (Services.ProjectService.IsWorkspaceItemFile(file)) { solFile = file; } else if (Services.ProjectService.IsSolutionItemFile(file)) { itemFile = file; } else { Console.WriteLine("File '{0}' is not a project or solution.", file); return(1); } } ConsoleProgressMonitor monitor = new ConsoleProgressMonitor(); IBuildTarget item; if (solFile != null) { item = Services.ProjectService.ReadWorkspaceItem(monitor, solFile); } else { item = Services.ProjectService.ReadSolutionItem(monitor, itemFile); } if (project != null) { Solution solution = item as Solution; item = null; if (solution != null) { item = solution.FindProjectByName(project); } if (item == null) { Console.WriteLine("The project '" + project + "' could not be found in " + file); return(1); } } IConfigurationTarget configTarget = item as IConfigurationTarget; if (config == null && configTarget != null) { config = configTarget.DefaultConfigurationId; } ConfigurationSelector configuration; if (item is SolutionEntityItem) { configuration = new ItemConfigurationSelector(config); } else { configuration = new SolutionConfigurationSelector(config); } monitor = new ConsoleProgressMonitor(); BuildResult res = item.RunTarget(monitor, command, configuration); return((res == null || res.ErrorCount == 0) ? 0 : 1); }
public int Run(string[] arguments) { Console.WriteLine(BrandingService.BrandApplicationName("MonoDevelop Build Tool")); foreach (string s in arguments) { ReadArgument(s); } if (help) { Console.WriteLine("build [options] [build-file]"); Console.WriteLine("-p --project:PROJECT Name of the project to build."); Console.WriteLine("-t --target:TARGET Name of the target: Build or Clean."); Console.WriteLine("-c --configuration:CONFIGURATION Name of the solution configuration to build."); Console.WriteLine("-r --runtime:PREFIX Prefix of the Mono runtime to build against."); Console.WriteLine(); Console.WriteLine("Supported targets:"); Console.WriteLine(" {0}: build the project (the default target).", ProjectService.BuildTarget); Console.WriteLine(" {0}: clean the project.", ProjectService.CleanTarget); Console.WriteLine(); return(0); } string solFile = null; string itemFile = null; if (file == null) { string[] files = Directory.GetFiles("."); foreach (string f in files) { if (Services.ProjectService.IsWorkspaceItemFile(f)) { solFile = f; break; } else if (itemFile == null && Services.ProjectService.IsSolutionItemFile(f)) { itemFile = f; } } if (solFile == null && itemFile == null) { Console.WriteLine("Project file not found."); return(1); } } else { if (Services.ProjectService.IsWorkspaceItemFile(file)) { solFile = file; } else if (Services.ProjectService.IsSolutionItemFile(file)) { itemFile = file; } else { Console.WriteLine("File '{0}' is not a project or solution.", file); return(1); } } IProgressMonitor monitor = new ConsoleProjectLoadProgressMonitor(new ConsoleProgressMonitor()); TargetRuntime targetRuntime = null; TargetRuntime defaultRuntime = Runtime.SystemAssemblyService.DefaultRuntime; if (runtime != null) { targetRuntime = MonoTargetRuntimeFactory.RegisterRuntime(new MonoRuntimeInfo(runtime)); if (targetRuntime != null) { Runtime.SystemAssemblyService.DefaultRuntime = targetRuntime; } } IBuildTarget item; if (solFile != null) { item = Services.ProjectService.ReadWorkspaceItem(monitor, solFile); } else { item = Services.ProjectService.ReadSolutionItem(monitor, itemFile); } using (var readItem = item) { if (project != null) { Solution solution = item as Solution; item = null; if (solution != null) { item = solution.FindProjectByName(project); } if (item == null) { Console.WriteLine("The project '" + project + "' could not be found in " + file); return(1); } } IConfigurationTarget configTarget = item as IConfigurationTarget; if (config == null && configTarget != null) { config = configTarget.DefaultConfigurationId; } monitor = new ConsoleProgressMonitor(); BuildResult res = null; if (item is SolutionEntityItem && ((SolutionEntityItem)item).ParentSolution == null) { ConfigurationSelector configuration = new ItemConfigurationSelector(config); res = item.RunTarget(monitor, command, configuration); } else { ConfigurationSelector configuration = new SolutionConfigurationSelector(config); SolutionEntityItem solutionEntityItem = item as SolutionEntityItem; if (solutionEntityItem != null) { if (command == ProjectService.BuildTarget) { res = solutionEntityItem.Build(monitor, configuration, true); } else if (command == ProjectService.CleanTarget) { solutionEntityItem.Clean(monitor, configuration); } else { res = item.RunTarget(monitor, command, configuration); } } else { res = item.RunTarget(monitor, command, configuration); } } if (targetRuntime != null) { Runtime.SystemAssemblyService.DefaultRuntime = defaultRuntime; MonoTargetRuntimeFactory.UnregisterRuntime((MonoTargetRuntime)targetRuntime); } if (res != null) { foreach (var err in res.Errors) { Console.Error.WriteLine(err); } } return((res == null || res.ErrorCount == 0) ? 0 : 1); } }
public async Task FastBuildCheckWithLibrary () { string solFile = Util.GetSampleProject ("fast-build-test", "FastBuildTest.sln"); Solution sol = (Solution)await Services.ProjectService.ReadWorkspaceItem (Util.GetMonitor (), solFile); var app = (DotNetProject)sol.Items [0]; var lib = (DotNetProject)sol.Items [1]; var cs = new SolutionConfigurationSelector ("Debug"); Assert.IsTrue (app.FastCheckNeedsBuild (cs)); Assert.IsTrue (lib.FastCheckNeedsBuild (cs)); var res = await sol.Build (Util.GetMonitor (), cs); Assert.IsFalse (res.HasErrors); Assert.IsFalse (app.FastCheckNeedsBuild (cs)); Assert.IsFalse (lib.FastCheckNeedsBuild (cs)); var myClass = sol.ItemDirectory.Combine ("MyClass.cs"); File.WriteAllText (myClass, "public class MyClass { public const string Message = \"Bye\" ; }"); FileService.NotifyFileChanged (myClass); Assert.IsTrue (app.FastCheckNeedsBuild (cs)); Assert.IsTrue (lib.FastCheckNeedsBuild (cs)); res = await lib.Build (Util.GetMonitor (), cs); Assert.IsFalse (res.HasErrors); Assert.IsFalse (lib.FastCheckNeedsBuild (cs)); Assert.IsTrue (app.FastCheckNeedsBuild (cs)); res = await app.Build (Util.GetMonitor (), cs); Assert.IsFalse (res.HasErrors); Assert.IsFalse (lib.FastCheckNeedsBuild (cs)); Assert.IsFalse (app.FastCheckNeedsBuild (cs)); }