Exemplo n.º 1
0
        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;
            }));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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;
            });
        }