public void RestoreAssemblyReferences(Sln solution)
 {
     foreach (var project in solution.Projects)
     {
         RestoreAssemblyReferencesInProject(project);
     }
 }
示例#2
0
        public virtual FileInfo WriteSlnFile(Sln solution, string writeInDirectory)
        {
            var outputFile = new FileInfo(GetOutputFilePath(writeInDirectory, solution));

            if (!outputFile.Directory.Exists)
            {
                outputFile.Directory.Create();
            }

            var renderer = new SlnFileRenderer(solution);
            var fileContents = renderer.Render();

            if (outputFile.Exists && ContentsUnmodified(outputFile, fileContents))
            {
                Log.Info("Solution file is unmodified from previous generation.");
                return outputFile;
            }

            using (var writer = new StreamWriter(outputFile.Open(FileMode.Create)))
            {
                writer.Write(fileContents);
            }

            Log.Info("Solution file written to " + outputFile.FullName);

            return outputFile;
        }
 public void RestoreHintPaths(Sln solution, SlnGenerationOptions options)
 {
     var packagesDir = Path.Combine(options.SlnOutputPath, "packages");
     foreach (var project in solution.Projects)
     {
         ConvertProjectHintPaths(project, packagesDir, Mode.Restore);
     }
 }
示例#4
0
        public void HandlesTrailingSlashOnRootDirectory()
        {
            var sln = new Sln("sample") { ProjectsRootDirectory = "Fake/Example/" };
            var proj = new CsProj { Path = "Fake/Example/ModuleA/ProjectA/ProjectA.csproj", Guid = Guid.NewGuid().ToString("B") };
            sln.AddProjects(proj);

            Assert.That(sln.Folders.FirstOrDefault(f => f.FolderName == "ModuleA"), Is.Not.Null, "Folders");
        }
示例#5
0
        public void CreatesNoSolutionFoldersForSimpleProjectStructure()
        {
            var sln = new Sln("sample") {ProjectsRootDirectory = "Fake/Example"};
            sln.AddProjects(new CsProj {Path = "Fake/Example/ProjectA/ProjectA.csproj"});
            sln.AddProjects(new CsProj {Path = "Fake/Example/ProjectB/ProjectB.csproj"});

            Assert.That(sln.Folders, Is.Null, "Folders");
        }
示例#6
0
        public void CreatesSolutionFoldersForNestedProjectStructure()
        {
            var sln = new Sln("sample") { ProjectsRootDirectory = "Fake/Example" };
            sln.AddProjects(new CsProj { Path = "Fake/Example/ModuleA/ProjectA/ProjectA.csproj" });
            sln.AddProjects(new CsProj { Path = "Fake/Example/ModuleA/ProjectB/ProjectB.csproj" });

            var folder = sln.Folders.FirstOrDefault();

            Assert.That(folder.FolderName, Is.EqualTo("ModuleA"));
            Assert.That(folder.ContentGuids.Count, Is.EqualTo(2));
        }
示例#7
0
        public void CreatesNestedSolutionFolders()
        {
            var sln = new Sln("sample") { ProjectsRootDirectory = "Fake/Example" };
            var proj = new CsProj { Path = "Fake/Example/Grouping1/ModuleA/ProjectA/ProjectA.csproj", Guid = Guid.NewGuid().ToString("B")};
            sln.AddProjects(proj);

            var child = sln.Folders.First(f => f.FolderName == "ModuleA");
            var parent = sln.Folders.First(f => f.FolderName == "Grouping1");

            Assert.That(parent.ContentGuids, Is.EqualTo(new[] {child.Guid}));
            Assert.That(child.ContentGuids, Is.EqualTo(new[] { proj.Guid }));
        }
示例#8
0
        public virtual Sln BuildSln(SlnGenerationOptions options)
        {
            this.options = options;
            builtSln = new Sln(options.SolutionName)
                {
                    Version = options.VisualStudioVersion,
                    ProjectsRootDirectory = options.ProjectsRootDirectory
                };

            AddProjectsToSln(options);

            return builtSln;
        }
        public void ConvertToProjectReferences(Sln solution)
        {
            var projectsByName = solution.Projects.ToDictionary(p => p.AssemblyName, p => p);

            foreach (var project in solution.Projects)
            {
                var assemblyNamesInSolution = project.ReferencedAssemblyNames.Intersect(projectsByName.Keys).ToArray();

                if (assemblyNamesInSolution.Length == 0) continue;

                ConvertToProjectReference(project, assemblyNamesInSolution.Select(a => projectsByName[a]));
            }
        }
示例#10
0
        public virtual Sln BuildSln(SlnGenerationOptions options)
        {
            _options = options;

            _builtSln = new Sln(options.SolutionName)
            {
                Version = options.VisualStudioVersion,
                ProjectsRootDirectory = options.ProjectsRootDirectory
            };

            AddProjectsToSln(options);

            return(_builtSln);
        }
示例#11
0
		protected void GeneratePartialGraphSolution(string[] targetProjectNames, params CsProj[] projectsList)
		{
			var generator = new SlimJim.Model.SlnBuilder(new List<CsProj>(projectsList));
			options.AddTargetProjectNames(targetProjectNames);
			solution = generator.BuildSln(options);
		}
示例#12
0
 private void MakeSolution(string name, params CsProj[] csProjs)
 {
     solution = new Sln(name, "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}");
     solution.AddProjects(csProjs);
 }
示例#13
0
 private string GetOutputFilePath(string writeInDirectory, Sln solution)
 {
     return Path.Combine(writeInDirectory, solution.Name + ".sln");
 }
示例#14
0
		public SlnFileRenderer(Sln solution)
		{
			this.solution = solution;
		}