Solutionizer.Commands.SaveSolutionCommand.Execute C# (CSharp) Method

Execute() public method

public Execute ( ) : void
return void
        public void Execute()
        {
            using (var writer = new StreamWriter(_solutionFileName, false, Encoding.UTF8)) {
                WriteHeader(writer);

                var projects = _solution.SolutionItems.Flatten<SolutionItem, SolutionProject, SolutionFolder>(p => p.Items).ToList();

                foreach (var project in projects) {
                    writer.WriteLine("Project(\"{0}\") = \"{1}\", \"{2}\", \"{3}\"", "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}",
                                     project.Name, FileSystem.GetRelativePath(_solutionFileName, project.Filepath),
                                     project.Guid.ToString("B").ToUpperInvariant());
                    writer.WriteLine("EndProject");
                }

                var folders = _solution.SolutionItems.Flatten<SolutionItem, SolutionFolder, SolutionFolder>(p => p.Items).Where(f => f.Items.Any());
                foreach (var folder in folders) {
                    writer.WriteLine("Project(\"{0}\") = \"{1}\", \"{2}\", \"{3}\"", "{2150E333-8FDC-42A3-9474-1A3956D46DE8}",
                                     folder.Name, folder.Name, folder.Guid.ToString("B").ToUpperInvariant());
                    writer.WriteLine("EndProject");
                }

                writer.WriteLine("Global");
                WriteTfsInformation(writer, projects);
                WriteSolutionConfigurationPlatforms(writer, projects);
                WriteProjectConfigurationPlatforms(writer, projects);
                WriteSolutionProperties(writer);
                WriteNestedProjects(writer);
                writer.WriteLine("EndGlobal");

                _solution.IsDirty = false;
            }
        }

Usage Example

コード例 #1
0
        public void CanAddSaveSolutionWithNestedProjectReferences()
        {
            CopyTestDataToPath("CsTestProject1.csproj", Path.Combine(_testDataPath, "sub", "p1"));
            CopyTestDataToPath("CsTestProject2.csproj", Path.Combine(_testDataPath, "sub", "p2"));
            CopyTestDataToPath("CsTestProject3.csproj", Path.Combine(_testDataPath, "p3", "sub"));

            _scanningCommand = new ScanningCommand(_testDataPath, true);
            _scanningCommand.Start().Wait();

            Project project;
            _scanningCommand.Projects.TryGetValue(Path.Combine(_testDataPath, "p3", "sub", "CsTestProject3.csproj"), out project);

            var solution = new SolutionViewModel(_settings, _testDataPath, _scanningCommand.Projects);
            solution.AddProject(project);

            // we need to change the Guid of the reference folder
            var refFolder = solution.SolutionItems.OfType<SolutionFolder>().First();
            refFolder.Guid = new Guid("{95374152-F021-4ABB-B317-74A183A89F00}");
            refFolder.Items.OfType<SolutionFolder>().First().Guid = new Guid("{CE1BA3BF-4957-4CBC-9D45-3DC68106B311}");

            var targetPath = Path.Combine(_testDataPath, "test.sln");

            var cmd = new SaveSolutionCommand(_settings, targetPath, VisualStudioVersion.VS2010, solution);
            cmd.Execute();

            Assert.AreEqual(ReadFromResource("CsTestProject3.sln"), File.ReadAllText(targetPath));
        }
All Usage Examples Of Solutionizer.Commands.SaveSolutionCommand::Execute