diff options
Diffstat (limited to 'mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs')
-rw-r--r-- | mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs index 4094c122e3..01a7c453ae 100644 --- a/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs +++ b/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs @@ -298,6 +298,7 @@ namespace Microsoft.Build.Utilities pinfo.WorkingDirectory = GetWorkingDirectory () ?? Environment.CurrentDirectory; pinfo.UseShellExecute = false; + pinfo.CreateNoWindow = true; pinfo.RedirectStandardOutput = true; pinfo.RedirectStandardError = true; @@ -464,13 +465,25 @@ namespace Microsoft.Build.Utilities } } - // Snatched from our codedom code, with some changes to make it compatible with csc - // (the line+column group is optional is csc) + // Keep in sync with mcs/class/System/Microsoft.CSharp/CSharpCodeCompiler.cs + const string ErrorRegexPattern = @" + ^ + (\s*(?<file>[^\(]+) # filename (optional) + (\((?<line>\d*)(,(?<column>\d*[\+]*))?\))? # line+column (optional) + :\s+)? + (?<level>\w+) # error|warning + \s+ + (?<number>[^:]*\d) # CS1234 + : + \s* + (?<message>.*)$"; + static Regex errorRegex; static Regex CscErrorRegex { get { if (errorRegex == null) - errorRegex = new Regex (@"^(\s*(?<file>[^\(]+)(\((?<line>\d*)(,(?<column>\d*[\+]*))?\))?:\s+)*(?<level>\w+)\s+(?<number>.*\d):\s*(?<message>.*)", RegexOptions.Compiled | RegexOptions.ExplicitCapture); + errorRegex = new Regex (ErrorRegexPattern, + RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnorePatternWhitespace); return errorRegex; } } |