public IXDocumentProxy CreateDocument(ProjectConfigurationFile projectConfigFile) { var document = XDocument.Load(projectConfigFile.FilePath); RemoveProjectReferences(document, projectConfigFile); AddAssemblyReferences(document, projectConfigFile); return(new XDocumentProxy(document)); }
public string CreateHintPath(string relativeProjectFileIncludePath, ProjectConfigurationFile projectConfig) { var relativeDirectory = _pathProxy.GetDirectoryName(relativeProjectFileIncludePath); var debugBuild = projectConfig.BuildConfigurations.First(f => f.ConfigurationName == ProjectBuildConfiguration.ConfigurationNameDebug); var result = Path.Combine(relativeDirectory, debugBuild.OutputPath, projectConfig.PropertiesConfiguration.AssemblyFileName); return(result); }
private static void RemoveProjectReferences(XContainer document, ProjectConfigurationFile projectConfig) { var xmlProjectReferences = document.Descendants().Where(f => f.Name.LocalName == ProjectConfigConstants.ProjectReferenceTagLocalName).ToList(); var projectReferenceNames = projectConfig.ProjectReferences.Select(f => f.AssemblyName).ToList(); var xmlProjectReferenceNames = xmlProjectReferences.Select(element => element.Descendants().First(f => f.Name.LocalName == "Name").Value).ToList(); var projectReferenceNamesToRemove = xmlProjectReferenceNames.Except(projectReferenceNames).ToList(); xmlProjectReferences.Where(element => projectReferenceNamesToRemove.Contains(element.Descendants().First(f => f.Name.LocalName == "Name").Value)).Remove(); }
private void AddAssemblyReferences(XDocument document, ProjectConfigurationFile projectConfig) { var assemblyReferencesFromFile = _assemblyReferenceFactory.CreateFromDocument(document); var assemblyReferencesToAdd = projectConfig.AssemblyReferences.Where(f => assemblyReferencesFromFile.All(r => r.IncludeDefinition.ShortName != f.IncludeDefinition.ShortName)).ToList(); var assemblyReferenceParent = GetOrCreateAssemblyReferenceParentElement(document); foreach (var assemblyReference in assemblyReferencesToAdd) { var assemblyRefXmlEment = _xmlAssemblyReferenceFactory.CreateElement(assemblyReference); assemblyReferenceParent.Add(assemblyRefXmlEment); } }
public void CreatingProjectConfig_WithAllParametersSet_CreatesProjectConfig() { // Act var projectPropertiesConfig = new ProjectPropertiesConfiguration("NS", "AS", ProjectOutputType.ConsoleApplication); var actualProjectConfig = new ProjectConfigurationFile( "Test", new List <ProjectAssemblyReference>(), new List <ProjectReference>(), projectPropertiesConfig, new List <ProjectBuildConfiguration>()); // Assert Assert.That(actualProjectConfig, Is.Not.Null); }
public ProjectConfigurationFile Create(string filePath) { var configDocument = XDocument.Load(filePath); var projectReferences = _projectReferenceFactory.CreateFromDocument(configDocument); var assemblyReferences = _assemblyReferenceFactory.CreateFromDocument(configDocument); var buildConfigurations = _buildConfigurationFactory.CreateFromDocument(configDocument); var propertiesConfiguration = _propertiesConfigurationFactory.CreateFromDocument(configDocument); var result = new ProjectConfigurationFile( filePath, assemblyReferences, projectReferences, propertiesConfiguration, buildConfigurations); return(result); }
private void SubstituteProjectConfigReferences(ProjectConfigurationFile projectConfigFile, IEnumerable <SolutionProjectReference> removedReferences) { foreach (var removedReference in removedReferences) { var existingProjectReference = projectConfigFile.ProjectReferences.FirstOrDefault(f => f.AssemblyName == removedReference.AssemblyName); if (existingProjectReference == null) { continue; } var assemblyReference = _assemblyReferenceFactory.CreateFromProjectReferenceFilePath( removedReference.AbsoluteProjectFilePath, existingProjectReference.RelativeProjectFileIncludePath); projectConfigFile.SubstituteProjectReference(existingProjectReference, assemblyReference); } }