private static void MapSolutionConfigurationsToProject( this SlnFile slnFile, ProjectInstance projectInstance, SlnPropertySet solutionProjectConfigs) { var(projectConfigurations, defaultProjectConfiguration) = GetKeysDictionary(projectInstance.GetConfigurations()); var(projectPlatforms, defaultProjectPlatform) = GetKeysDictionary(projectInstance.GetPlatforms()); foreach (var solutionConfigKey in slnFile.SolutionConfigurationsSection.Keys) { var projectConfigKey = MapSolutionConfigKeyToProjectConfigKey( solutionConfigKey, projectConfigurations, defaultProjectConfiguration, projectPlatforms, defaultProjectPlatform); if (projectConfigKey == null) { continue; } var activeConfigKey = $"{solutionConfigKey}.ActiveCfg"; if (!solutionProjectConfigs.ContainsKey(activeConfigKey)) { solutionProjectConfigs[activeConfigKey] = projectConfigKey; } var buildKey = $"{solutionConfigKey}.Build.0"; if (!solutionProjectConfigs.ContainsKey(buildKey)) { solutionProjectConfigs[buildKey] = projectConfigKey; } } }
private static void AddDefaultSolutionConfigurations( List <string> defaultConfigurations, SlnPropertySet solutionConfigs) { foreach (var config in defaultConfigurations) { if (!solutionConfigs.ContainsKey(config)) { solutionConfigs[config] = config; } } }
private static void AddDefaultProjectConfigurations( List <string> defaultConfigurations, SlnPropertySet projectConfigs) { foreach (var config in defaultConfigurations) { var activeCfgKey = $"{config}.ActiveCfg"; if (!projectConfigs.ContainsKey(activeCfgKey)) { projectConfigs[activeCfgKey] = config; } var build0Key = $"{config}.Build.0"; if (!projectConfigs.ContainsKey(build0Key)) { projectConfigs[build0Key] = config; } } }
private static HashSet <string> GetSolutionFoldersThatContainProjectsInItsHierarchy( this SlnFile slnFile, SlnPropertySet nestedProjects) { var solutionFoldersInUse = new HashSet <string>(); var nonSolutionFolderProjects = slnFile.Projects.GetProjectsNotOfType( ProjectTypeGuids.SolutionFolderGuid); foreach (var nonSolutionFolderProject in nonSolutionFolderProjects) { var id = nonSolutionFolderProject.Id; while (nestedProjects.ContainsKey(id)) { id = nestedProjects[id]; solutionFoldersInUse.Add(id); } } return(solutionFoldersInUse); }
private IDictionary <string, string> GetSolutionFolderPaths(SlnFile slnFile, SlnPropertySet nestedProjects) { var solutionFolderPaths = new Dictionary <string, string>(); var solutionFolderProjects = slnFile.Projects.GetProjectsByType(ProjectTypeGuids.SolutionFolderGuid); foreach (var slnProject in solutionFolderProjects) { var path = slnProject.FilePath; var id = slnProject.Id; while (nestedProjects.ContainsKey(id)) { id = nestedProjects[id]; var parentSlnProject = solutionFolderProjects.Where(p => p.Id == id).Single(); path = Path.Combine(parentSlnProject.FilePath, path); } solutionFolderPaths[path] = slnProject.Id; } return(solutionFolderPaths); }
internal protected override void OnReadSolutionFolderItemData(ProgressMonitor monitor, SlnPropertySet properties, SolutionFolderItem item) { Solution.OnReadSolutionFolderItemData(monitor, properties, item); }
void LoadSolutionConfigurations (SlnPropertySet sec, Solution solution, ProgressMonitor monitor) { if (sec == null) return; foreach (var pair in sec) { string configId = FromSlnConfigurationId (pair.Key); SolutionConfiguration config = solution.Configurations [configId]; if (config == null) { config = CreateSolutionConfigurationFromId (configId); solution.Configurations.Add (config); } } }
internal protected virtual void OnWriteConfigurationData (ProgressMonitor monitor, SlnPropertySet properties, SolutionConfiguration configuration) { next.OnWriteConfigurationData (monitor, properties, configuration); }
internal void WriteConfigurationData(ProgressMonitor monitor, SlnPropertySet properties, SolutionConfiguration configuration) { SolutionExtension.OnWriteConfigurationData(monitor, properties, configuration); }
public void Generate(bool ForceRegenerate) { var s = new SlnFile(); s.FullPath = OutputDirectory / (SolutionName + ".sln"); using (var sr = new StringReader(SlnTemplateText)) { s.Read(sr); } s.Projects.Clear(); s.SolutionConfigurationsSection.Clear(); s.ProjectConfigurationsSection.Clear(); foreach (var ConfigurationType in Enum.GetValues(typeof(ConfigurationType)).Cast <ConfigurationType>()) { var ConfigurationTypeAndArchitecture = $"{ConfigurationType}|{GetArchitectureString(TargetOperatingSystem, TargetArchitecture)}"; s.SolutionConfigurationsSection.SetValue(ConfigurationTypeAndArchitecture, ConfigurationTypeAndArchitecture); } SlnSection NestedProjects = null; foreach (var Section in s.Sections.Where(Section => Section.Id == "NestedProjects")) { Section.Clear(); NestedProjects = Section; } if (NestedProjects == null) { NestedProjects = new SlnSection { Id = "NestedProjects" }; s.Sections.Add(NestedProjects); } var Filters = new Dictionary <String, String>(StringComparer.OrdinalIgnoreCase); foreach (var Project in ProjectReferences) { var Dir = Project.VirtualDir.ToString(PathStringStyle.Windows); if (!Filters.ContainsKey(Dir)) { var CurrentDir = Dir.AsPath(); var CurrentDirFilter = CurrentDir.ToString(PathStringStyle.Windows); while ((CurrentDirFilter != ".") && !Filters.ContainsKey(CurrentDirFilter)) { var g = Guid.ParseExact(Hash.GetHashForPath(CurrentDirFilter, 32), "N").ToString().ToUpper(); Filters.Add(CurrentDirFilter, g); CurrentDir = CurrentDir.Parent; CurrentDirFilter = CurrentDir.ToString(PathStringStyle.Windows); if (CurrentDirFilter != ".") { var gUpper = Guid.ParseExact(Hash.GetHashForPath(CurrentDirFilter, 32), "N").ToString().ToUpper(); NestedProjects.Properties.SetValue("{" + g + "}", "{" + gUpper + "}"); } } } s.Projects.Add(new SlnProject { TypeGuid = "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}", Name = Project.Name, FilePath = Project.FilePath.FullPath.RelativeTo(OutputDirectory).ToString(PathStringStyle.Windows), Id = "{" + Project.Id + "}" }); var conf = new SlnPropertySet("{" + Project.Id + "}"); foreach (var c in s.SolutionConfigurationsSection) { var Value = TargetOperatingSystem == OperatingSystemType.Windows ? c.Value.Replace("|x86", "|Win32") : c.Value; conf.SetValue(c.Key + ".ActiveCfg", Value); conf.SetValue(c.Key + ".Build.0", Value); } s.ProjectConfigurationsSection.Add(conf); if (Dir != ".") { NestedProjects.Properties.SetValue("{" + Project.Id + "}", "{" + Filters[Dir] + "}"); } } foreach (var f in Filters) { s.Projects.Add(new SlnProject { TypeGuid = "{2150E333-8FDC-42A3-9474-1A3956D46DE8}", Name = f.Key.AsPath().FileName, FilePath = f.Key.AsPath().FileName, Id = "{" + f.Value + "}" }); } foreach (var Section in s.Sections.Where(Section => Section.Id == "ExtensibilityGlobals")) { Section.Properties.SetValue("SolutionGuid", "{" + SolutionId.ToUpper() + "}"); } String Text; using (var sw = new StringWriter()) { s.Write(sw); Text = sw.ToString(); } TextFile.WriteToFile(s.FullPath, Text, Encoding.UTF8, !ForceRegenerate); }
internal protected virtual void OnWriteConfigurationData(ProgressMonitor monitor, SlnPropertySet properties, SolutionConfiguration configuration) { next.OnWriteConfigurationData(monitor, properties, configuration); }
internal protected virtual void OnWriteSolutionData (ProgressMonitor monitor, SlnPropertySet properties) { next.OnWriteSolutionData (monitor, properties); }
internal protected virtual void OnWriteSolutionFolderItemData (ProgressMonitor monitor, SlnPropertySet properties, SolutionFolderItem item) { next.OnWriteSolutionFolderItemData (monitor, properties, item); }
/*protected virtual*/ void OnWriteConfigurationData(ProgressMonitor monitor, SlnPropertySet properties, SolutionConfiguration configuration) { // Do nothing by default }
internal protected override void OnReadConfigurationData(ProgressMonitor monitor, SlnPropertySet properties, SolutionConfiguration configuration) { Solution.OnReadConfigurationData(monitor, properties, configuration); }
/*protected virtual*/ void OnWriteSolutionFolderItemData(ProgressMonitor monitor, SlnPropertySet properties, SolutionFolderItem item) { if (item is SolutionItem) { ((SolutionItem)item).WriteSolutionData(monitor, properties); } }
internal void WriteSolutionFolderItemData(ProgressMonitor monitor, SlnPropertySet properties, SolutionFolderItem item) { SolutionExtension.OnWriteSolutionFolderItemData(monitor, properties, item); }
internal protected virtual void OnWriteSolutionData(ProgressMonitor monitor, SlnPropertySet properties) { next.OnWriteSolutionData(monitor, properties); }
internal protected virtual void OnWriteSolutionFolderItemData(ProgressMonitor monitor, SlnPropertySet properties, SolutionFolderItem item) { next.OnWriteSolutionFolderItemData(monitor, properties, item); }