public void Execute(ProjectConfiguration configuration, string selectedProject) { GenerateSolution( configuration.RootPath, configuration.ThirdPartiesRootPath, configuration.ResolveAssemblies(selectedProject)); }
public void Execute(ProjectConfiguration configuration, string selectedProject) { CopyThirdParties( configuration.RootPath, configuration.ThirdPartiesRootPath, selectedProject); }
public void Execute(ProjectConfiguration configuration, string selectedProject) { DirectoryInfo projectDirectory = new DirectoryInfo(configuration.RootPath); List<FileSystemInfo> projectFiles = projectDirectory .EnumerateFileSystemInfos("*.csproj", SearchOption.AllDirectories) .ToList(); var targetProjects = configuration.ResolveAssemblies(selectedProject); if (_checkOnlyDependencies) { var projectSetup = new ProjectSetup { WhenAssemblyKeyFileNotFound = ProjectSetupBehavior.Valid, WhenContainsFileReferences = ProjectSetupBehavior.Valid, WhenContainsProjectReferences = ProjectSetupBehavior.Warn, WhenReferenceNotResolved = ProjectSetupBehavior.Warn, WhenReferenceResolvedInDifferentLocation = ProjectSetupBehavior.Warn, WhenRequiredProjectLinkNotFound = ProjectSetupBehavior.Valid }; var consoleLogger = ConsoleLogger.Default; var generator = new SolutionGenerator.Toolkit.SolutionGenerator(consoleLogger); var projectLoader = generator.GetProjectLoader(projectSetup, configuration.RootPath); var targetProjectFiles = generator.GetTargetProjectFiles(projectLoader, targetProjects); ReferenceWalker walker = new ReferenceWalker(consoleLogger); var dependencies = walker.WalkReferencesRecursively( projectSetup, projectLoader, targetProjectFiles, new[] {configuration.ThirdPartiesRootPath}, new HashSet<string>()); projectFiles = new List<FileSystemInfo>(); foreach (var dependency in dependencies) { var project = projectLoader.GetProjectById(dependency); projectFiles.Add(new FileInfo(project.ProjectFileLocation)); } } ChangeOutputPath(projectFiles, configuration.RootPath, configuration.BinariesOutputPath, targetProjects); ChangeReferences(projectFiles, configuration.RootPath, configuration.BinariesOutputPath, configuration.TargetFrameworkVersion, configuration.GetSystemRuntimeReferenceMode, configuration.GetSpecificVersionReferenceMode, targetProjects); ChangeProjectSettings(projectFiles); }
private static void DisplayConfiguration(ProjectConfiguration configuration) { if (configuration == null) throw new NullReferenceException("configuration is null"); if (configuration.Groups == null) throw new NullReferenceException("configuration.Groups are null"); foreach (ProjectGroup projectGroup in configuration.Groups) { ConsoleLogger.Default.Info("Group = {0}, Items = {1}", projectGroup.Name, projectGroup.Items != null ? projectGroup.Items.Length : 0); if (projectGroup.Items != null) { foreach (string projectInfo in projectGroup.Items) { ConsoleLogger.Default.Info("Project = {0}", projectInfo); } } } }
private static void TestProjectConfigurationSerialization() { ProjectConfiguration configuration = new ProjectConfiguration(); configuration.ProjectSetup = new ProjectSetup(); configuration.ProjectSetup.RequiredProjectFiles = new[] { "BSS.Shared.v5\\SNK\\AssemblyKey.snk", "Source\\AssemblyInfoCommon.cs" }; configuration.SourceFolders = new[] { "BSS.Shared.v6\\Source", "Source" }; configuration.ThirdPartyFolders = new[] { "Binaries" }; configuration.Groups = new ProjectGroup[3]; ProjectGroup projectGroup = new ProjectGroup(); projectGroup.Name = "Services"; projectGroup.Items = new[] { @"Source\Application\ProcessingService\BSS.ERP.Application.ProcessingService-trade.csproj" }; configuration.Groups[0] = projectGroup; ProjectGroup secondProjectGroup = new ProjectGroup(); secondProjectGroup.Name = "GUI"; secondProjectGroup.Items = new[] { @"Source\GUI\Windows\TradeLauncher\BSS.ERP.GUI.Windows.Launcher-trade.csproj", }; configuration.Groups[1] = secondProjectGroup; ProjectGroup groupGroup = new ProjectGroup(); groupGroup.ContainsGroupNames = true; groupGroup.Name = "All"; groupGroup.Items = new[] { "Services", "GUI" }; configuration.Groups[2] = groupGroup; ConsoleLogger.Default.Info(configuration.XmlSerialize()); }
private static List<string> CollectProjectsFromGroup(string currentGroupName, ProjectConfiguration configuration) { List<string> projectList = new List<string>(); ProjectGroup projectGroup = configuration.Select(currentGroupName); if (projectGroup == null) throw new Exception(string.Format("Project group name {0} not found in configuration.", currentGroupName)); if (projectGroup.ContainsGroupNames) { if (projectGroup.Items != null) { foreach (string groupName in projectGroup.Items) { IEnumerable<string> projects = CollectProjectsFromGroup(groupName, configuration); projectList.AddRange(projects); } } } else { projectList.AddRange(projectGroup.Items); } if (projectList.Count > 1) { // remove dublicates HashSet<string> duplicates = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase); for (int i = 0; i < projectList.Count; ++i) { string location = projectList[i]; if (duplicates.Contains(location)) { projectList.RemoveAt(i); --i; } duplicates.Add(location); } } return projectList; }