Example #1
0
        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);
        }
Example #3
0
        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();
        }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
            }
        }