public Reference(VerifiedFolder baseDirectory, ReferenceInclude include, string relativePath) { BaseDirectory = baseDirectory; RelativePath = relativePath; Include = include; VersionFromPath = VersionWithSuffix.TryParseFromPath(relativePath); }
public Solution(VerifiedFile slnFile, Project[] projects, ProjectLine[] projectLines) { _slnFile = slnFile; Projects = projects; ProjectLines = projectLines; PackagesDirectory = slnFile.Directory.GetRelativeFolder("packages"); }
public static bool PathBeginsWith(this IFile file, VerifiedFolder folder) { if (folder == null) { return(false); } var thisPath = file.FullName.ToLower(); var folderPath = folder.FullName.ToLower(); return(thisPath.StartsWith(folderPath)); }
public PackagesConfig TryReadPackagesConfig(VerifiedFolder folder) { var file = folder.GetRelativeFile("packages.config"); if (file is VerifiedFile verifiedFile) { return(new PackagesConfig(verifiedFile, this)); } else { return(null); } }
public PackagesConfig CreateNewPackagesConfig(VerifiedFolder projectDirectory) { string[] lines = new string[] { @"<?xml version=""1.0"" encoding=""utf-8""?>", "<packages>", "</packages>" }; var filePath = projectDirectory.FullName + @"\packages.config"; File.WriteAllLines(filePath, lines); return(_nugetReader.TryReadPackagesConfig(projectDirectory)); }
static TestPaths() { var binFolder = new VerifiedFolder(TestContext.CurrentContext.TestDirectory); if (binFolder.FullName.Contains("Console.Tests")) { TestProjectDirectory = binFolder .GetFirstAncestor("ProjectSanitizer.Console.Tests") .Parent .GetRelativeFolder("ProjectSanitizer.Tests"); } else { TestProjectDirectory = binFolder.GetFirstAncestor("ProjectSanitizer.Tests"); } }
public static void RevertAllCsProjAndPackagesConfigFiles(VerifiedFolder directory) { var csprojFile = directory.GetFiles() .FirstOrDefault(f => f.FullName.EndsWith("csproj")); if (csprojFile != null) { RevertFileState(csprojFile); var packagesConfigFile = directory.GetRelativeFile("packages.config"); RevertFileState(packagesConfigFile); } foreach (var folder in directory.GetDirectories()) { RevertAllCsProjAndPackagesConfigFiles(folder); } }
public string CorrectPackagesPath(VerifiedFolder projectDirectory, VerifiedFolder packagesDirectory, string path) { if (!path.ToLower().Contains("packages")) { return(path); } path = path.Substring(path.IndexOf("packages")); var folder = projectDirectory; while (folder != null && folder.GetRelativeFolderOrDefault("packages") == null) { folder = folder.Parent; path = @"..\" + path; } return(path); }
public RelativeFile(VerifiedFolder projectDirectory, string relativePath) { _file = new FileInfo(Path.Combine(projectDirectory.FullName, relativePath)); }
public void AddOrModifyNugetReference(NugetReference referenceToCopy, Project project, VerifiedFolder packagesDirectory) { AddOrModifyReferencePackagesConfig(referenceToCopy, project); AddOrModifyReferenceInProjectFile(referenceToCopy, project, packagesDirectory); }
public void AddOrModifyReferenceInProjectFile(NugetReference referenceToCopy, Project project, VerifiedFolder packagesDirectory) { var srcNode = referenceToCopy.Project.GetReferenceNode(referenceToCopy.Package.ID) ?? throw new System.Exception("Unable to read source reference node for package " + referenceToCopy.Package.ID); var xmlNode = project.GetReferenceNode(referenceToCopy.Package.ID); if (xmlNode != null) { var copy = xmlNode.OwnerDocument.ImportNode(srcNode, true); xmlNode.ParentNode.ReplaceChild(newChild: copy, oldChild: xmlNode); project.SaveChanges(); } else { var itemGroupNode = project.GetReferenceItemGroupNode(); var copy = itemGroupNode.OwnerDocument.ImportNode(srcNode, true); itemGroupNode.AppendChild(copy); } var hintPathNode = project.GetReferenceHintPathNode(referenceToCopy.Package.ID); if (hintPathNode != null) { hintPathNode.InnerText = CorrectPackagesPath(project.ProjectDirectory, packagesDirectory, hintPathNode.InnerText); } project.SaveChanges(); }
public ProjectReference(VerifiedFolder baseDirectory, ReferenceInclude include, string relativePath) : base(baseDirectory, include, relativePath) { }
public MissingFile(VerifiedFolder projectDirectory, string relativePath) : base(projectDirectory, relativePath) { }