public void BuildConsoleProject() { var current = PropertyService.Get("MonoDevelop.Ide.BuildWithMSBuild", false); try { PropertyService.Set("MonoDevelop.Ide.BuildWithMSBuild", true); Solution sol = TestProjectsChecks.CreateConsoleSolution("console-project-msbuild"); sol.Save(Util.GetMonitor()); // Ensure the project is buildable var result = sol.Build(Util.GetMonitor(), "Debug"); Assert.AreEqual(0, result.ErrorCount, "#1"); // Ensure the project is still buildable with xbuild after a rename ProjectOptionsDialog.RenameItem(sol.GetAllProjects() [0], "Test"); result = sol.Build(Util.GetMonitor(), "Release"); Assert.AreEqual(0, result.ErrorCount, "#2"); } finally { PropertyService.Set("MonoDevelop.Ide.BuildWithMSBuild", current); } }
public void GetItemFiles() { Solution sol = TestProjectsChecks.CreateConsoleSolution("item-files"); List <FilePath> files = sol.GetItemFiles(false).ToList(); Assert.AreEqual(1, files.Count); Assert.AreEqual(sol.FileName, files [0]); DotNetProject p = (DotNetProject)sol.Items [0]; files = p.GetItemFiles(false).ToList(); Assert.AreEqual(1, files.Count); Assert.AreEqual(p.FileName, files [0]); files = p.GetItemFiles(true).ToList(); Assert.AreEqual(6, files.Count); Assert.IsTrue(files.Contains(p.FileName)); foreach (ProjectFile pf in p.Files) { Assert.IsTrue(files.Contains(pf.FilePath), "Contains " + pf.FilePath); } files = sol.GetItemFiles(true).ToList(); Assert.AreEqual(7, files.Count); Assert.IsTrue(files.Contains(sol.FileName)); Assert.IsTrue(files.Contains(p.FileName)); foreach (ProjectFile pf in p.Files) { Assert.IsTrue(files.Contains(pf.FilePath), "Contains " + pf.FilePath); } sol.Dispose(); }
public void LoadSaveBuildConsoleProject() { string solFile = Util.GetSampleProject("csharp-console-mdp", "csharp-console-mdp.mds"); WorkspaceItem item = Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); Assert.IsTrue(item is Solution); Solution sol = (Solution)item; TestProjectsChecks.CheckBasicMdConsoleProject(sol); string projectFile = ((Project)sol.Items [0]).FileName; BuildResult cr = item.Build(Util.GetMonitor(), (SolutionConfigurationSelector)"Debug"); Assert.IsNotNull(cr); Assert.AreEqual(0, cr.ErrorCount); Assert.AreEqual(0, cr.WarningCount); string solXml = Util.GetXmlFileInfoset(solFile); string projectXml = Util.GetXmlFileInfoset(projectFile); sol.Save(Util.GetMonitor()); Assert.AreEqual(solXml, Util.GetXmlFileInfoset(solFile), "Saved solution file"); Assert.AreEqual(projectXml, Util.GetXmlFileInfoset(projectFile), "Saved project file"); }
public void LoadSaveBuildConsoleProject() { string solFile = Util.GetSampleProject("console-project", "ConsoleProject.sln"); WorkspaceItem item = Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); Assert.IsTrue(item is Solution); Solution sol = (Solution)item; TestProjectsChecks.CheckBasicVsConsoleProject(sol); string projectFile = ((Project)sol.Items [0]).FileName; BuildResult cr = item.Build(Util.GetMonitor(), "Debug"); Assert.IsNotNull(cr); Assert.AreEqual(0, cr.ErrorCount); Assert.AreEqual(0, cr.WarningCount); string solXml = File.ReadAllText(solFile); string projectXml = Util.GetXmlFileInfoset(projectFile); sol.Save(Util.GetMonitor()); Assert.AreEqual(solXml, File.ReadAllText(solFile)); Assert.AreEqual(projectXml, Util.GetXmlFileInfoset(projectFile)); }
public void CreateConsoleProject() { Solution sol = TestProjectsChecks.CreateConsoleSolution("console-project-msbuild"); sol.ConvertToFormat(Util.FileFormatMSBuild10, true); sol.Save(Util.GetMonitor()); // msbuild format string solXml = File.ReadAllText(sol.FileName); string projectXml = Util.GetXmlFileInfoset(((SolutionEntityItem)sol.Items [0]).FileName); // Make sure we compare using the same guid Project p = sol.Items [0] as Project; string guid = p.ItemId; solXml = solXml.Replace(guid, "{969F05E2-0E79-4C5B-982C-8F3DD4D46311}"); projectXml = projectXml.Replace(guid, "{969F05E2-0E79-4C5B-982C-8F3DD4D46311}"); string solFile = Util.GetSampleProjectPath("generated-console-project", "TestSolution.sln"); string projectFile = Util.GetSampleProjectPath("generated-console-project", "TestProject.csproj"); Assert.AreEqual(Util.ToWindowsEndings(File.ReadAllText(solFile)), solXml); Assert.AreEqual(Util.ToWindowsEndings(Util.GetXmlFileInfoset(projectFile)), projectXml); }
public async Task Reloading() { Solution sol = TestProjectsChecks.CreateConsoleSolution("reloading"); await sol.SaveAsync(Util.GetMonitor()); Assert.IsFalse(sol.NeedsReload); Project p = sol.Items [0] as Project; Assert.IsFalse(p.NeedsReload); // Changing format must reset the reload flag (it's like we just created a new solution in memory) sol.ConvertToFormat(MSBuildFileFormat.VS2010); Assert.IsFalse(sol.NeedsReload); Assert.IsFalse(p.NeedsReload); sol.ConvertToFormat(MSBuildFileFormat.VS2012); Assert.IsFalse(sol.NeedsReload); Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Remove(p); Assert.IsFalse(p.NeedsReload); p.FileFormat = MSBuildFileFormat.VS2012; Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Add(p); Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Remove(p); Assert.IsFalse(p.NeedsReload); p.FileFormat = MSBuildFileFormat.VS2005; Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Add(p); Assert.IsFalse(p.NeedsReload); string solFile2 = Util.GetSampleProject("csharp-console", "csharp-console.sln"); Solution sol2 = (Solution)await Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile2); Project p2 = sol2.Items [0] as Project; Assert.IsFalse(sol2.NeedsReload); Assert.IsFalse(p2.NeedsReload); // Check reloading flag in another solution string solFile = sol.FileName; Solution sol3 = (Solution)await Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); Assert.IsFalse(sol3.NeedsReload); Project p3 = sol3.Items [0] as Project; Assert.IsFalse(p3.NeedsReload); System.Threading.Thread.Sleep(1000); sol.Description = "Foo"; // Small change to force the solution file save await sol.SaveAsync(Util.GetMonitor()); Assert.IsTrue(sol3.NeedsReload); sol.Dispose(); }
public async Task FormatConversions() { Solution sol = TestProjectsChecks.CreateConsoleSolution("reloading"); Project p = (Project)sol.Items [0]; Assert.AreEqual(MSBuildFileFormat.DefaultFormat.Id, sol.FileFormat.Id); Assert.AreEqual(MSBuildFileFormat.DefaultFormat.Id, p.FileFormat.Id); Assert.AreEqual("4.0", p.ToolsVersion); // Change solution format of unsaved solution sol.ConvertToFormat(MSBuildFileFormat.VS2008); Assert.AreEqual("MSBuild08", sol.FileFormat.Id); Assert.AreEqual("MSBuild08", p.FileFormat.Id); Assert.AreEqual("3.5", p.ToolsVersion); sol.ConvertToFormat(MSBuildFileFormat.VS2010); Assert.AreEqual("MSBuild10", sol.FileFormat.Id); Assert.AreEqual("MSBuild10", p.FileFormat.Id); Assert.AreEqual("4.0", p.ToolsVersion); // Change solution format of saved solution await sol.SaveAsync(Util.GetMonitor()); sol.ConvertToFormat(MSBuildFileFormat.VS2005); Assert.AreEqual("MSBuild05", sol.FileFormat.Id); Assert.AreEqual("MSBuild05", p.FileFormat.Id); Assert.AreEqual("2.0", p.ToolsVersion); // Add new project Project newp = Services.ProjectService.CreateDotNetProject("C#"); Assert.AreEqual("MSBuild12", newp.FileFormat.Id); Assert.AreEqual("4.0", newp.ToolsVersion); sol.RootFolder.Items.Add(newp); Assert.AreEqual("MSBuild05", newp.FileFormat.Id); Assert.AreEqual("2.0", newp.ToolsVersion); // Add saved project string solFile = Util.GetSampleProject("console-project", "ConsoleProject.sln"); Solution msol = (Solution)await Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); Project mp = (Project)msol.Items [0]; Assert.AreEqual("MSBuild05", mp.FileFormat.Id); sol.RootFolder.Items.Add(newp); Assert.AreEqual("MSBuild05", mp.FileFormat.Id); sol.Dispose(); }
public void FormatConversions() { Solution sol = TestProjectsChecks.CreateConsoleSolution("reloading"); Project p = (Project)sol.Items [0]; Assert.AreEqual(Services.ProjectService.DefaultFileFormat.Id, sol.FileFormat.Id); Assert.AreEqual(Services.ProjectService.DefaultFileFormat.Id, p.FileFormat.Id); Assert.AreEqual("4.0", MSBuildProjectService.GetHandler(p).ToolsVersion); // Change solution format of unsaved solution sol.ConvertToFormat(Util.FileFormatMSBuild08, true); Assert.AreEqual("MSBuild08", sol.FileFormat.Id); Assert.AreEqual("MSBuild08", p.FileFormat.Id); Assert.AreEqual("3.5", MSBuildProjectService.GetHandler(p).ToolsVersion); sol.ConvertToFormat(Util.FileFormatMSBuild10, true); Assert.AreEqual("MSBuild10", sol.FileFormat.Id); Assert.AreEqual("MSBuild10", p.FileFormat.Id); Assert.AreEqual("4.0", MSBuildProjectService.GetHandler(p).ToolsVersion); // Change solution format of saved solution sol.Save(Util.GetMonitor()); sol.ConvertToFormat(Util.FileFormatMSBuild05, false); Assert.AreEqual("MSBuild05", sol.FileFormat.Id); Assert.AreEqual("MSBuild05", p.FileFormat.Id); Assert.AreEqual("2.0", MSBuildProjectService.GetHandler(p).ToolsVersion); // Add new project Project newp = new DotNetAssemblyProject("C#"); Assert.AreEqual("MSBuild12", newp.FileFormat.Id); Assert.AreEqual("4.0", MSBuildProjectService.GetHandler(newp).ToolsVersion); sol.RootFolder.Items.Add(newp); Assert.AreEqual("MSBuild05", newp.FileFormat.Id); Assert.AreEqual("2.0", MSBuildProjectService.GetHandler(newp).ToolsVersion); // Add saved project string solFile = Util.GetSampleProject("console-project", "ConsoleProject.sln"); Solution msol = (Solution)Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); Project mp = (Project)msol.Items [0]; Assert.AreEqual("MSBuild05", mp.FileFormat.Id); sol.RootFolder.Items.Add(newp); Assert.AreEqual("MSBuild05", mp.FileFormat.Id); }
public void Reloading() { Solution sol = TestProjectsChecks.CreateConsoleSolution("reloading"); sol.Save(Util.GetMonitor()); Assert.IsFalse(sol.NeedsReload); Project p = sol.Items [0] as Project; Assert.IsFalse(p.NeedsReload); // Changing format must reset the reload flag (it's like we just created a new solution in memory) sol.ConvertToFormat(Util.FileFormatMD1, true); Assert.IsFalse(sol.NeedsReload); Assert.IsFalse(p.NeedsReload); sol.ConvertToFormat(Util.FileFormatMSBuild05, true); Assert.IsFalse(sol.NeedsReload); Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Remove(p); Assert.IsFalse(p.NeedsReload); p.FileFormat = Util.FileFormatMD1; Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Add(p); Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Remove(p); Assert.IsFalse(p.NeedsReload); p.FileFormat = Util.FileFormatMSBuild05; Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Add(p); Assert.IsFalse(p.NeedsReload); string mdsSolFile = Util.GetSampleProject("csharp-console-mdp", "csharp-console-mdp.mds"); Solution mdsSol = (Solution)Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), mdsSolFile); Project pmds = mdsSol.Items [0] as Project; Assert.IsFalse(mdsSol.NeedsReload); Assert.IsFalse(pmds.NeedsReload); // Check reloading flag in another solution string solFile = sol.FileName; Solution sol2 = (Solution)Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile); Assert.IsFalse(sol2.NeedsReload); Project p2 = sol2.Items [0] as Project; Assert.IsFalse(p2.NeedsReload); System.Threading.Thread.Sleep(1000); sol.Save(Util.GetMonitor()); Assert.IsTrue(sol2.NeedsReload); }
public async Task BuildConsoleProject() { Solution sol = TestProjectsChecks.CreateConsoleSolution("console-project-msbuild"); await sol.SaveAsync(Util.GetMonitor()); // Ensure the project is buildable var result = await sol.Build(Util.GetMonitor(), "Debug"); Assert.AreEqual(0, result.ErrorCount, "#1"); sol.Dispose(); }
public void BuildConsoleProject() { Solution sol = TestProjectsChecks.CreateConsoleSolution("console-project-msbuild"); sol.Save(Util.GetMonitor()); // Ensure the project is buildable var result = sol.Build(Util.GetMonitor(), "Debug"); Assert.AreEqual(0, result.ErrorCount, "#1"); // Ensure the project is still buildable with xbuild after a rename ProjectOptionsDialog.RenameItem(sol.GetAllProjects() [0], "Test"); result = sol.Build(Util.GetMonitor(), "Release"); Assert.AreEqual(0, result.ErrorCount, "#2"); }
public async Task BuildConsoleProjectAfterRename() { Solution sol = TestProjectsChecks.CreateConsoleSolution("console-project-msbuild"); await sol.SaveAsync(Util.GetMonitor()); // Ensure the project is still buildable with xbuild after a rename var project = sol.GetAllProjects().First(); FilePath newFile = project.FileName.ParentDirectory.Combine("Test" + project.FileName.Extension); FileService.RenameFile(project.FileName, newFile.FileName); project.Name = "Test"; var result = await sol.Build(Util.GetMonitor(), "Release"); Assert.AreEqual(0, result.ErrorCount, "#2"); sol.Dispose(); }
public async Task FirstBuildFlagNotRemovedAfterClean() { Solution sol = TestProjectsChecks.CreateConsoleSolution("console-project-msbuild"); var project = sol.GetAllProjects().First(); project.IsFirstBuild = true; Assert.IsTrue(project.UserProperties.GetValue <bool> ("FirstBuild")); await sol.SaveAsync(Util.GetMonitor()); var result = await sol.Clean(Util.GetMonitor(), "Debug"); Assert.IsTrue(project.UserProperties.HasValue("FirstBuild")); Assert.IsTrue(project.IsFirstBuild); Assert.IsFalse(result.HasErrors); sol.Dispose(); }
public void CreateNestedSolutions() { Solution sol = TestProjectsChecks.CreateProjectWithFolders("nested-solutions-md1"); sol.ConvertToFormat(Util.FileFormatMD1, true); sol.Save(Util.GetMonitor()); string solFile = Util.GetSampleProjectPath("nested-solutions-mdp", "nested-solutions-mdp.mds"); string dir = Path.GetDirectoryName(solFile); string solXml = Util.GetXmlFileInfoset(solFile); string p1Xml = Util.GetXmlFileInfoset(dir, "console-project", "console-project.mdp"); string s1Xml = Util.GetXmlFileInfoset(dir, "nested-solution1", "nested-solution1.mds"); string s2Xml = Util.GetXmlFileInfoset(dir, "nested-solution2", "nested-solution2.mds"); string plib1Xml = Util.GetXmlFileInfoset(dir, "nested-solution1", "library1", "library1.mdp"); string plib2Xml = Util.GetXmlFileInfoset(dir, "nested-solution1", "library2", "library2.mdp"); string p2Xml = Util.GetXmlFileInfoset(dir, "nested-solution2", "console-project2", "console-project2.mdp"); string s3Xml = Util.GetXmlFileInfoset(dir, "nested-solution2", "nested-solution3", "nested-solution3.mds"); string plib3Xml = Util.GetXmlFileInfoset(dir, "nested-solution2", "nested-solution3", "library3", "library3.mdp"); string plib4Xml = Util.GetXmlFileInfoset(dir, "nested-solution2", "nested-solution3", "library4", "library4.mdp"); dir = Path.GetDirectoryName(sol.FileName); string solXml2 = Util.GetXmlFileInfoset(solFile); string p1Xml2 = Util.GetXmlFileInfoset(dir, "console-project", "console-project.mdp"); string s1Xml2 = Util.GetXmlFileInfoset(dir, "nested-solution1", "nested-solution1.mds"); string s2Xml2 = Util.GetXmlFileInfoset(dir, "nested-solution2", "nested-solution2.mds"); string plib1Xml2 = Util.GetXmlFileInfoset(dir, "nested-solution1", "library1", "library1.mdp"); string plib2Xml2 = Util.GetXmlFileInfoset(dir, "nested-solution1", "library2", "library2.mdp"); string p2Xml2 = Util.GetXmlFileInfoset(dir, "nested-solution2", "console-project2", "console-project2.mdp"); string s3Xml2 = Util.GetXmlFileInfoset(dir, "nested-solution2", "nested-solution3", "nested-solution3.mds"); string plib3Xml2 = Util.GetXmlFileInfoset(dir, "nested-solution2", "nested-solution3", "library3", "library3.mdp"); string plib4Xml2 = Util.GetXmlFileInfoset(dir, "nested-solution2", "nested-solution3", "library4", "library4.mdp"); Assert.AreEqual(solXml, solXml2, "solXml"); Assert.AreEqual(p1Xml, p1Xml2, "p1Xml"); Assert.AreEqual(s1Xml, s1Xml2, "s1Xml"); Assert.AreEqual(s2Xml, s2Xml2, "s2Xml"); Assert.AreEqual(plib1Xml, plib1Xml2, "plib1Xml"); Assert.AreEqual(plib2Xml, plib2Xml2, "plib2Xml"); Assert.AreEqual(p2Xml, p2Xml2, "p2Xml"); Assert.AreEqual(s3Xml, s3Xml2, "s3Xml"); Assert.AreEqual(plib3Xml, plib3Xml2, "plib3Xml"); Assert.AreEqual(plib4Xml, plib4Xml2, "plib4Xml"); }
public void AddNewImportWithConditionToProject() { Solution sol = TestProjectsChecks.CreateConsoleSolution("console-project-msbuild"); var project = sol.GetAllProjects().First() as DotNetProject; string condition = @"Exists('packages\Xamarin.Forms\build\Xamarin.Forms.targets')"; project.AddImportIfMissing(@"packages\Xamarin.Forms\build\Xamarin.Forms.targets", condition); sol.Save(Util.GetMonitor()); var doc = new XmlDocument(); doc.Load(project.FileName); var manager = new XmlNamespaceManager(doc.NameTable); manager.AddNamespace("ms", "http://schemas.microsoft.com/developer/msbuild/2003"); XmlElement import = (XmlElement)doc.SelectSingleNode(@"//ms:Import[@Project='packages\Xamarin.Forms\build\Xamarin.Forms.targets']", manager); Assert.AreEqual(condition, import.GetAttribute("Condition")); }
public void CreateConsoleProject() { Solution sol = TestProjectsChecks.CreateConsoleSolution("console-project-msbuild"); sol.ConvertToFormat(Util.FileFormatMSBuild05, true); sol.Save(Util.GetMonitor()); // msbuild format string solXml = File.ReadAllText(sol.FileName); string projectXml = Util.GetXmlFileInfoset(((SolutionEntityItem)sol.Items [0]).FileName); // Make sure we compare using the same guid Project p = sol.Items [0] as Project; string guid = p.ItemId; solXml = solXml.Replace(guid, "{DC577202-654B-4FDB-95C7-8CC5DDF6D32D}"); projectXml = projectXml.Replace(guid, "{DC577202-654B-4FDB-95C7-8CC5DDF6D32D}"); string solFile = Util.GetSampleProjectPath("generated-console-project", "TestSolution.sln"); string projectFile = Util.GetSampleProjectPath("generated-console-project", "TestProject.csproj"); Assert.AreEqual(File.ReadAllText(solFile), solXml); Assert.AreEqual(Util.GetXmlFileInfoset(projectFile), projectXml); // MD1 format sol.ConvertToFormat(Util.FileFormatMD1, true); sol.Save(Util.GetMonitor()); solXml = Util.GetXmlFileInfoset(sol.FileName); projectXml = Util.GetXmlFileInfoset(((SolutionEntityItem)sol.Items [0]).FileName); solFile = Util.GetSampleProjectPath("generated-console-project", "TestSolution.mds"); projectFile = Util.GetSampleProjectPath("generated-console-project", "TestProject.mdp"); Assert.AreEqual(Util.GetXmlFileInfoset(solFile), solXml, "solXml: " + sol.FileName); Assert.AreEqual(Util.GetXmlFileInfoset(projectFile), projectXml, "projectXml: " + ((SolutionEntityItem)sol.Items [0]).FileName); // sol.FileFormat = Services.ProjectService.FileFormats.GetFileFormat ("MSBuild08"); // sol.Save (Util.GetMonitor ()); }
public void RoundtripPropertyWithXmlCharacters() { Solution sol = TestProjectsChecks.CreateConsoleSolution("roundtrip-property-with-xml"); sol.ConvertToFormat(Util.FileFormatMSBuild05, true); var value = "Hello<foo>&.exe"; var p = (DotNetProject)sol.GetAllProjects().First(); var conf = ((DotNetProjectConfiguration)p.Configurations [0]); conf.OutputAssembly = value; sol.Save(Util.GetMonitor()); sol = (Solution)Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), sol.FileName); p = (DotNetProject)sol.GetAllProjects().First(); conf = ((DotNetProjectConfiguration)p.Configurations [0]); Assert.AreEqual(value, conf.OutputAssembly); }
public void TestLoadSaveResources() { TestProjectsChecks.TestLoadSaveResources("MD1"); }
public void TestLoadSaveResources() { TestProjectsChecks.TestLoadSaveResources("MSBuild05"); }
public void TestLoadSaveSolutionFolders() { TestProjectsChecks.TestLoadSaveSolutionFolders("MSBuild05"); }
public void GenericProject() { TestProjectsChecks.CheckGenericItemProject("MSBuild05"); }
public void TestCreateLoadSaveConsoleProject() { TestProjectsChecks.TestCreateLoadSaveConsoleProject("MSBuild05"); }
public async Task Reloading() { using (Solution sol = TestProjectsChecks.CreateConsoleSolution("reloading")) { await sol.SaveAsync(Util.GetMonitor()); Assert.IsFalse(sol.NeedsReload); await FileWatcherService.Add(sol); Project p = sol.Items [0] as Project; Assert.IsFalse(p.NeedsReload); // Changing format must reset the reload flag (it's like we just created a new solution in memory) sol.ConvertToFormat(MSBuildFileFormat.VS2010); Assert.IsFalse(sol.NeedsReload); Assert.IsFalse(p.NeedsReload); sol.ConvertToFormat(MSBuildFileFormat.VS2012); Assert.IsFalse(sol.NeedsReload); Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Remove(p); Assert.IsFalse(p.NeedsReload); p.FileFormat = MSBuildFileFormat.VS2012; Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Add(p); Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Remove(p); Assert.IsFalse(p.NeedsReload); p.FileFormat = MSBuildFileFormat.VS2005; Assert.IsFalse(p.NeedsReload); sol.RootFolder.Items.Add(p); Assert.IsFalse(p.NeedsReload); string solFile2 = Util.GetSampleProject("csharp-console", "csharp-console.sln"); using (Solution sol2 = (Solution)await Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile2)) { Project p2 = sol2.Items [0] as Project; Assert.IsFalse(sol2.NeedsReload); Assert.IsFalse(p2.NeedsReload); await FileWatcherService.Add(sol2); // Check reloading flag in another solution string solFile = sol.FileName; using (Solution sol3 = (Solution)await Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solFile)) { Assert.IsFalse(sol3.NeedsReload); await FileWatcherService.Add(sol3); Project p3 = sol3.Items [0] as Project; Assert.IsFalse(p3.NeedsReload); System.Threading.Thread.Sleep(1000); try { fileChangeNotification = new TaskCompletionSource <bool> (); waitForFileChange = sol.FileName; FileService.FileChanged += OnFileChanged; sol.Description = "Foo"; // Small change to force the solution file save await sol.SaveAsync(Util.GetMonitor()); // we need to wait for the file notification to be posted await Task.Run(() => { fileChangeNotification.Task.Wait(TimeSpan.FromMilliseconds(10000)); }); Assert.IsTrue(fileChangeNotification.Task.IsCompleted); } finally { FileService.FileChanged -= OnFileChanged; } Assert.IsTrue(sol3.NeedsReload); } } } }
public void GenericProject() { TestProjectsChecks.CheckGenericItemProject("MD1"); }
public async Task SaveSharedProject() { Solution sol = TestProjectsChecks.CreateConsoleSolution("shared-project"); sol.ConvertToFormat(MSBuildFileFormat.VS2012); await sol.SaveAsync(Util.GetMonitor()); var pc = (DotNetProject)sol.Items [0]; // Add shared project var sp = new SharedAssetsProject() { LanguageName = "C#", DefaultNamespace = "TestNamespace" }; sp.AddFile(sol.ItemDirectory.Combine("Test.cs")); await sp.SaveAsync(Util.GetMonitor(), sol.ItemDirectory.Combine("Shared")); sol.RootFolder.AddItem(sp); await sol.SaveAsync(Util.GetMonitor()); // Make sure we compare using the same guid string solXml = File.ReadAllText(sol.FileName).Replace(pc.ItemId, "{7DE4B613-BAB6-49DE-83FA-707D4E120306}").Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); string projectXml = Util.GetXmlFileInfoset(pc.FileName).Replace(pc.ItemId, "{7DE4B613-BAB6-49DE-83FA-707D4E120306}"); string sharedProjectXml = Util.GetXmlFileInfoset(sp.FileName).Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); string sharedProjectItemsXml = Util.GetXmlFileInfoset(sp.FileName.ChangeExtension(".projitems")).Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); string refSolXml = Util.ToWindowsEndings(File.ReadAllText(Util.GetSampleProjectPath("generated-shared-project", "TestSolution.sln"))); string refProjectXml = Util.ToWindowsEndings(Util.GetXmlFileInfoset(Util.GetSampleProjectPath("generated-shared-project", "TestProject.csproj"))); string refSharedProjectXml = Util.ToWindowsEndings(Util.GetXmlFileInfoset(Util.GetSampleProjectPath("generated-shared-project", "Shared.shproj"))); string refSharedProjectItemsXml = Util.ToWindowsEndings(Util.GetXmlFileInfoset(Util.GetSampleProjectPath("generated-shared-project", "Shared.projitems"))); Assert.AreEqual(refSolXml, solXml); Assert.AreEqual(refProjectXml, projectXml); Assert.AreEqual(refSharedProjectXml, sharedProjectXml); Assert.AreEqual(refSharedProjectItemsXml, sharedProjectItemsXml); // Add a reference var r = ProjectReference.CreateProjectReference(sp); pc.References.Add(r); await sol.SaveAsync(Util.GetMonitor()); solXml = File.ReadAllText(sol.FileName).Replace(pc.ItemId, "{7DE4B613-BAB6-49DE-83FA-707D4E120306}").Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); projectXml = Util.GetXmlFileInfoset(pc.FileName).Replace(pc.ItemId, "{7DE4B613-BAB6-49DE-83FA-707D4E120306}"); sharedProjectXml = Util.GetXmlFileInfoset(sp.FileName).Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); sharedProjectItemsXml = Util.GetXmlFileInfoset(sp.FileName.ChangeExtension(".projitems")).Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); refProjectXml = Util.ToWindowsEndings(Util.GetXmlFileInfoset(Util.GetSampleProjectPath("generated-shared-project", "TestProject.csproj.saved1"))); Assert.AreEqual(refSolXml, solXml); Assert.AreEqual(refProjectXml, projectXml); Assert.AreEqual(refSharedProjectXml, sharedProjectXml); Assert.AreEqual(refSharedProjectItemsXml, sharedProjectItemsXml); // Add a file and change the default namespace sp.DefaultNamespace = "TestNamespace2"; var file = sp.AddFile(sol.ItemDirectory.Combine("Test2.cs")); await sol.SaveAsync(Util.GetMonitor()); solXml = File.ReadAllText(sol.FileName).Replace(pc.ItemId, "{7DE4B613-BAB6-49DE-83FA-707D4E120306}").Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); projectXml = Util.GetXmlFileInfoset(pc.FileName).Replace(pc.ItemId, "{7DE4B613-BAB6-49DE-83FA-707D4E120306}"); sharedProjectXml = Util.GetXmlFileInfoset(sp.FileName).Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); sharedProjectItemsXml = Util.GetXmlFileInfoset(sp.FileName.ChangeExtension(".projitems")).Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); refSharedProjectItemsXml = Util.ToWindowsEndings(Util.GetXmlFileInfoset(Util.GetSampleProjectPath("generated-shared-project", "Shared.projitems.saved1"))); Assert.AreEqual(refSolXml, solXml); Assert.AreEqual(refProjectXml, projectXml); Assert.AreEqual(refSharedProjectXml, sharedProjectXml); Assert.AreEqual(refSharedProjectItemsXml, sharedProjectItemsXml); // Remove a file and restore the namespace sp.DefaultNamespace = "TestNamespace"; sp.Files.Remove(file); await sol.SaveAsync(Util.GetMonitor()); solXml = File.ReadAllText(sol.FileName).Replace(pc.ItemId, "{7DE4B613-BAB6-49DE-83FA-707D4E120306}").Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); projectXml = Util.GetXmlFileInfoset(pc.FileName).Replace(pc.ItemId, "{7DE4B613-BAB6-49DE-83FA-707D4E120306}"); sharedProjectXml = Util.GetXmlFileInfoset(sp.FileName).Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); sharedProjectItemsXml = Util.GetXmlFileInfoset(sp.FileName.ChangeExtension(".projitems")).Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); refSharedProjectItemsXml = Util.ToWindowsEndings(Util.GetXmlFileInfoset(Util.GetSampleProjectPath("generated-shared-project", "Shared.projitems"))); Assert.AreEqual(refSolXml, solXml); Assert.AreEqual(refProjectXml, projectXml); Assert.AreEqual(refSharedProjectXml, sharedProjectXml); Assert.AreEqual(refSharedProjectItemsXml, sharedProjectItemsXml); // Remove reference pc.References.Remove(r); await sol.SaveAsync(Util.GetMonitor()); solXml = File.ReadAllText(sol.FileName).Replace(pc.ItemId, "{7DE4B613-BAB6-49DE-83FA-707D4E120306}").Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); projectXml = Util.GetXmlFileInfoset(pc.FileName).Replace(pc.ItemId, "{7DE4B613-BAB6-49DE-83FA-707D4E120306}"); sharedProjectXml = Util.GetXmlFileInfoset(sp.FileName).Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); sharedProjectItemsXml = Util.GetXmlFileInfoset(sp.FileName.ChangeExtension(".projitems")).Replace(sp.ItemId, "{8DD793BE-42C3-4D66-8359-460CEE75980D}"); refProjectXml = Util.ToWindowsEndings(Util.GetXmlFileInfoset(Util.GetSampleProjectPath("generated-shared-project", "TestProject.csproj"))); Assert.AreEqual(refSolXml, solXml); Assert.AreEqual(refProjectXml, projectXml); Assert.AreEqual(refSharedProjectXml, sharedProjectXml); Assert.AreEqual(refSharedProjectItemsXml, sharedProjectItemsXml); sol.Dispose(); }