private static void AddProjectsToSolutionReference(DotnetSolution solution, IReadOnlyList <string> projectPaths) { Dotnet.AddProjectsToSolution($"{solution.Path}{solution.Name}.sln", projectPaths) .ForwardStdOut() .ForwardStdErr() .Execute(); }
public bool Process(IEngineEnvironmentSettings environment, IPostAction actionConfig, ICreationResult templateCreationResult, string outputBasePath) { if (string.IsNullOrEmpty(outputBasePath)) { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionUnresolvedSlnFile)); return(false); } IReadOnlyList <string> nearestSlnFilesFould = FindSolutionFilesAtOrAbovePath(environment.Host.FileSystem, outputBasePath); if (nearestSlnFilesFould.Count != 1) { environment.Host.LogMessage(LocalizableStrings.AddProjToSlnPostActionUnresolvedSlnFile); return(false); } if (!TryGetProjectFilesToAdd(environment, actionConfig, templateCreationResult, outputBasePath, out IReadOnlyList <string> projectFiles)) { environment.Host.LogMessage(LocalizableStrings.AddProjToSlnPostActionNoProjFiles); return(false); } string solutionFolder = GetSolutionFolder(actionConfig); Dotnet addProjToSlnCommand = Dotnet.AddProjectsToSolution(nearestSlnFilesFould[0], projectFiles, GetSolutionFolder(actionConfig)); addProjToSlnCommand.CaptureStdOut(); addProjToSlnCommand.CaptureStdErr(); environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionRunning, addProjToSlnCommand.Command)); Dotnet.Result commandResult = addProjToSlnCommand.Execute(); if (commandResult.ExitCode != 0) { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionFailed, string.Join(" ", projectFiles), nearestSlnFilesFould[0], solutionFolder)); environment.Host.LogMessage(string.Format(LocalizableStrings.CommandOutput, commandResult.StdOut + Environment.NewLine + Environment.NewLine + commandResult.StdErr)); environment.Host.LogMessage(string.Empty); return(false); } else { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionSucceeded, string.Join(" ", projectFiles), nearestSlnFilesFould[0], solutionFolder)); return(true); } }
public bool Process(IEngineEnvironmentSettings environment, IPostAction action, ICreationEffects2 creationEffects, ICreationResult templateCreationResult, string outputBasePath) { if (string.IsNullOrEmpty(outputBasePath)) { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionUnresolvedSlnFile)); return(false); } IReadOnlyList <string> nearestSlnFilesFould = FindSolutionFilesAtOrAbovePath(environment.Host.FileSystem, outputBasePath); if (nearestSlnFilesFould.Count != 1) { environment.Host.LogMessage(LocalizableStrings.AddProjToSlnPostActionUnresolvedSlnFile); return(false); } IReadOnlyList <string> projectFiles; if (action.Args.TryGetValue("projectFiles", out string configProjectFiles)) { JToken config = JToken.Parse(configProjectFiles); List <string> allProjects = new List <string>(); if (config is JArray arr) { foreach (JToken globText in arr) { if (globText.Type != JTokenType.String) { continue; } foreach (string path in GetTargetForSource(creationEffects, globText.ToString())) { if (Path.GetExtension(path).EndsWith("proj", StringComparison.OrdinalIgnoreCase)) { allProjects.Add(path); } } } } else if (config.Type == JTokenType.String) { foreach (string path in GetTargetForSource(creationEffects, config.ToString())) { if (Path.GetExtension(path).EndsWith("proj", StringComparison.OrdinalIgnoreCase)) { allProjects.Add(path); } } } if (allProjects.Count == 0) { environment.Host.LogMessage(LocalizableStrings.AddProjToSlnPostActionNoProjFiles); return(false); } projectFiles = allProjects; } else { //If the author didn't opt in to the new behavior by specifying "projectFiles", use the old behavior return(Process(environment, action, templateCreationResult, outputBasePath)); } string solutionFolder = GetSolutionFolder(action); Dotnet addProjToSlnCommand = Dotnet.AddProjectsToSolution(nearestSlnFilesFould[0], projectFiles, solutionFolder); addProjToSlnCommand.CaptureStdOut(); addProjToSlnCommand.CaptureStdErr(); environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionRunning, addProjToSlnCommand.Command)); Dotnet.Result commandResult = addProjToSlnCommand.Execute(); if (commandResult.ExitCode != 0) { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionFailed, string.Join(" ", projectFiles), nearestSlnFilesFould[0], solutionFolder)); environment.Host.LogMessage(string.Format(LocalizableStrings.CommandOutput, commandResult.StdOut + Environment.NewLine + Environment.NewLine + commandResult.StdErr)); environment.Host.LogMessage(string.Empty); return(false); } else { environment.Host.LogMessage(string.Format(LocalizableStrings.AddProjToSlnPostActionSucceeded, string.Join(" ", projectFiles), nearestSlnFilesFould[0], solutionFolder)); return(true); } }