public AddReferenceResponse AddReference(IProject project, string reference) { var response = new AddReferenceResponse(); var projectToReference = _solution.Projects.First(p => p.FileName.Contains(reference)); var projectXml = project.AsXml(); var referenceNodes = GetReferenceNodes(projectXml, "ProjectReference"); var relativeProjectPath = project.FileName.GetRelativePath(projectToReference.FileName); var projectReferenceNode = CreateProjectReferenceNode(relativeProjectPath, projectToReference); var projectAlreadyAdded = referenceNodes.Any(n => n.Attribute("Include").Value.Equals(relativeProjectPath)); if (IsCircularReference(project, projectToReference)) { response.Message = "Reference will create circular dependency"; return(response); } if (!projectAlreadyAdded) { var projectContainsProjectReferences = referenceNodes.Count > 0; if (projectContainsProjectReferences) { referenceNodes.First().Parent.Add(projectReferenceNode); } else { var projectItemGroup = new XElement(MsBuildNameSpace + "ItemGroup"); projectItemGroup.Add(projectReferenceNode); projectXml.Element(MsBuildNameSpace + "Project").Add(projectItemGroup); } project.AddReference(new ProjectReference(_solution, projectToReference.Title, projectToReference.ProjectId)); project.Save(projectXml); response.Message = string.Format("Reference to {0} added successfully", projectToReference.Title); } else { response.Message = "Reference already added"; } return(response); }
public AddReferenceResponse AddReference(IProject project, string reference) { var response = new AddReferenceResponse(); var projectToReference = _solution.Projects.First(p => p.FileName.Contains(reference)); var projectXml = project.AsXml(); var referenceNodes = GetReferenceNodes(projectXml, "ProjectReference"); var relativeProjectPath = project.FileName.GetRelativePath(projectToReference.FileName); var projectReferenceNode = CreateProjectReferenceNode(relativeProjectPath, projectToReference); var projectAlreadyAdded = referenceNodes.Any(n => n.Attribute("Include").Value.Equals(relativeProjectPath)); if (IsCircularReference(project, projectToReference)) { response.Message = "Reference will create circular dependency"; return response; } if (!projectAlreadyAdded) { var projectContainsProjectReferences = referenceNodes.Count > 0; if (projectContainsProjectReferences) { referenceNodes.First().Parent.Add(projectReferenceNode); } else { var projectItemGroup = new XElement(MsBuildNameSpace + "ItemGroup"); projectItemGroup.Add(projectReferenceNode); projectXml.Element(MsBuildNameSpace + "Project").Add(projectItemGroup); } project.AddReference(new ProjectReference(_solution, projectToReference.Title)); project.Save(projectXml); response.Message = string.Format("Reference to {0} added successfully", projectToReference.Title); } else { response.Message = "Reference already added"; } return response; }
public AddReferenceResponse AddReference(IProject project, string reference) { var response = new AddReferenceResponse(); var projectXml = project.AsXml(); var referenceNodes = GetReferenceNodes(projectXml, "Reference"); var referenceAlreadyAdded = referenceNodes.Any(n => n.Attribute("Include").Value.Equals(reference)); if (!referenceAlreadyAdded) { var fileReferenceNode = CreateReferenceNode(reference); if (referenceNodes.Count > 0) { referenceNodes.First().Parent.Add(fileReferenceNode); } else { var projectItemGroup = new XElement(MsBuildNameSpace + "ItemGroup"); projectItemGroup.Add(fileReferenceNode); projectXml.Element(MsBuildNameSpace + "Project").Add(projectItemGroup); } var assemblyPath = project.FindAssembly(reference); if (assemblyPath != null) { project.AddReference(assemblyPath); project.Save(projectXml); response.Message = string.Format("Reference to {0} added successfully", reference); } else { response.Message = "Did not find " + reference; } } else { response.Message = "Reference already added"; } return(response); }
public AddReferenceResponse AddReference(IProject project, string reference) { var response = new AddReferenceResponse(); var projectXml = project.AsXml(); var referenceNodes = GetReferenceNodes(projectXml, "Reference"); var referenceAlreadyAdded = referenceNodes.Any(n => n.Attribute("Include").Value.Equals(reference)); if (!referenceAlreadyAdded) { var fileReferenceNode = CreateReferenceNode(reference); if (referenceNodes.Count > 0) { referenceNodes.First().Parent.Add(fileReferenceNode); } else { var projectItemGroup = new XElement(MsBuildNameSpace + "ItemGroup"); projectItemGroup.Add(fileReferenceNode); projectXml.Element(MsBuildNameSpace + "Project").Add(projectItemGroup); } var assemblyPath = project.FindAssembly (reference); if (assemblyPath != null) { project.AddReference (assemblyPath); project.Save (projectXml); response.Message = string.Format ("Reference to {0} added successfully", reference); } else { response.Message = "Did not find " + reference; } } else { response.Message = "Reference already added"; } return response; }
public AddReferenceResponse AddReference(IProject project, string reference) { var response = new AddReferenceResponse(); var projectXml = project.AsXml(); var referenceNodes = GetReferenceNodes(projectXml, "Reference"); var relativeReferencePath = project.FileName.GetRelativePath(reference); var referenceName = reference.Substring(reference.LastIndexOf("\\") + 1).Replace(".dll", ""); var referenceAlreadyAdded = referenceNodes.Any(n => n.Attribute("Include").Value.Equals(referenceName)); var fileReferenceNode = CreateReferenceNode(relativeReferencePath, referenceName); if (!referenceAlreadyAdded) { if (referenceNodes.Count > 0) { referenceNodes.First().Parent.Add(fileReferenceNode); } else { var projectItemGroup = new XElement(MsBuildNameSpace + "ItemGroup"); projectItemGroup.Add(fileReferenceNode); projectXml.Element(MsBuildNameSpace + "Project").Add(projectItemGroup); } project.AddReference(reference.LowerCaseDriveLetter()); project.Save(projectXml); response.Message = string.Format("Reference to {0} added successfully", referenceName); } else { response.Message = "Reference already added"; } return response; }
public AddReferenceResponse AddReference(IProject project, string reference) { var response = new AddReferenceResponse(); var projectXml = project.AsXml(); var referenceNodes = GetReferenceNodes(projectXml, "Reference"); var relativeReferencePath = project.FileName.GetRelativePath(reference); var referenceName = reference.Substring(reference.LastIndexOf("\\") + 1).Replace(".dll", ""); var referenceAlreadyAdded = referenceNodes.Any(n => n.Attribute("Include").Value.Equals(referenceName)); var fileReferenceNode = CreateReferenceNode(relativeReferencePath, referenceName); if (!referenceAlreadyAdded) { if (referenceNodes.Count > 0) { referenceNodes.First().Parent.Add(fileReferenceNode); } else { var projectItemGroup = new XElement(MsBuildNameSpace + "ItemGroup"); projectItemGroup.Add(fileReferenceNode); projectXml.Element(MsBuildNameSpace + "Project").Add(projectItemGroup); } project.AddReference(reference); project.Save(projectXml); response.Message = string.Format("Reference to {0} added successfully", referenceName); } else { response.Message = "Reference already added"; } return(response); }