private static string PerformSubstitutions(IPythonProject2 project, string label) { return(Regex.Replace(label, @"\{(?<key>\w+)\}", m => { var key = m.Groups["key"].Value; if ("projectname".Equals(key, StringComparison.InvariantCultureIgnoreCase)) { return Path.ChangeExtension(project.ProjectFile, null); } else if ("projectfile".Equals(key, StringComparison.InvariantCultureIgnoreCase)) { return project.ProjectFile; } var instance = project.GetMSBuildProjectInstance(); if (instance != null) { var value = instance.GetPropertyValue(key); if (!string.IsNullOrEmpty(value)) { return value; } } return m.Value; })); }
private static IDictionary <string, TargetResult> BuildTarget(IPythonProject2 project, string target) { var config = project.GetMSBuildProjectInstance(); if (config == null) { throw new ArgumentException("Project does not support MSBuild", "project"); } IDictionary <string, TargetResult> outputs; var logger = new StringLogger(); #if DEBUG var loggers = new ILogger[] { new TraceLogger(), logger }; #else var loggers = new ILogger[] { logger }; #endif if (!config.Build(new[] { target }, loggers, Enumerable.Empty <ForwardingLoggerRecord>(), out outputs)) { var outputWindow = OutputWindowRedirector.Get( project.Site, VSConstants.OutputWindowPaneGuid.BuildOutputPane_guid, "Build" ); outputWindow.WriteErrorLine(SR.GetString(SR.ErrorBuildingCustomCommand, target)); foreach (var line in logger.Lines) { outputWindow.WriteErrorLine(line.TrimEnd('\r', '\n')); } throw new InvalidOperationException(SR.GetString(SR.ErrorBuildingCustomCommand, target)); } return(outputs); }
private static IDictionary<string, TargetResult> BuildTarget(IPythonProject2 project, string target) { var config = project.GetMSBuildProjectInstance(); if (config == null) { throw new ArgumentException("Project does not support MSBuild", "project"); } IDictionary<string, TargetResult> outputs; var logger = new StringLogger(); #if DEBUG var loggers = new ILogger[] { new TraceLogger(), logger }; #else var loggers = new ILogger[] { logger }; #endif if (!config.Build(new[] { target }, loggers, Enumerable.Empty<ForwardingLoggerRecord>(), out outputs)) { var outputWindow = OutputWindowRedirector.Get( project.Site, VSConstants.OutputWindowPaneGuid.BuildOutputPane_guid, "Build" ); outputWindow.WriteErrorLine(Strings.ErrorBuildingCustomCommand.FormatUI(target)); foreach (var line in logger.Lines) { outputWindow.WriteErrorLine(line.TrimEnd('\r', '\n')); } throw new InvalidOperationException(Strings.ErrorBuildingCustomCommand.FormatUI(target)); } return outputs; }
private static string PerformSubstitutions(IPythonProject2 project, string label) { return Regex.Replace(label, @"\{(?<key>\w+)\}", m => { var key = m.Groups["key"].Value; if ("projectname".Equals(key, StringComparison.InvariantCultureIgnoreCase)) { return Path.ChangeExtension(project.ProjectFile, null); } else if ("projectfile".Equals(key, StringComparison.InvariantCultureIgnoreCase)) { return project.ProjectFile; } var instance = project.GetMSBuildProjectInstance(); if (instance != null) { var value = instance.GetPropertyValue(key); if (!string.IsNullOrEmpty(value)) { return value; } } return m.Value; }); }