summaryrefslogtreecommitdiff
path: root/mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs
diff options
context:
space:
mode:
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.cs19
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;
}
}