/// <summary> /// Handles the generic message raised event. /// </summary> /// <param name="sender">The sender.</param> /// <param name="messageArgs">The <see cref="BuildMessageEventArgs"/> instance containing the event data.</param> private void HandleMessageRaised(object sender, BuildMessageEventArgs messageArgs) { const string taskAssemblyPattern = "Using \"(?<task>.+)\" task from (assembly|the task factory) \"(?<assembly>.+)\"\\."; // Task Input / Outputs if (messageArgs.Message.StartsWith(TaskParameterMessagePrefix)) { _build.AddTaskParameter(messageArgs, TaskParameterMessagePrefix); } else if (messageArgs.Message.StartsWith(OutputItemsMessagePrefix)) { _build.AddTaskParameter(messageArgs, OutputItemsMessagePrefix); } else if (messageArgs.Message.StartsWith(OutputPropertyMessagePrefix)) { _build.AddTaskParameter(messageArgs, OutputPropertyMessagePrefix); } // Item / Property groups else if (messageArgs.Message.StartsWith(PropertyGroupMessagePrefix)) { _build.AddPropertyGroup(messageArgs, PropertyGroupMessagePrefix); } else if (messageArgs.Message.StartsWith(ItemGroupIncludeMessagePrefix)) { _build.AddItemGroup(messageArgs, ItemGroupIncludeMessagePrefix); } else if (messageArgs.Message.StartsWith(ItemGroupRemoveMessagePrefix)) { _build.AddItemGroup(messageArgs, ItemGroupRemoveMessagePrefix); } else { // This was command line arguments for processEvent task var args = messageArgs as TaskCommandLineEventArgs; if (args != null) { _build.AddCommandLine(args); return; } // A task from assembly message (parses out the task name and assembly path). var match = Regex.Match(messageArgs.Message, taskAssemblyPattern); if (match.Success) { _build.SetTaskAssembly(match.Groups["task"].Value, match.Groups["assembly"].Value); } else { // Just processEvent generic log message or something we currently don't handle in the object model. _build.AddMessage(messageArgs, messageArgs.Message); } } }