Evaluate Target Condition too.
authorAtsushi Eno <atsushieno@veritas-vos-liberabit.com>
Wed, 27 Nov 2013 15:35:57 +0000 (00:35 +0900)
committerAtsushi Eno <atsushieno@veritas-vos-liberabit.com>
Fri, 29 Nov 2013 09:24:07 +0000 (18:24 +0900)
mcs/class/Microsoft.Build/Microsoft.Build.Internal/BuildEngine4.cs

index be787ea62051223540a8a8d821e729814205637c..87334b9a1373fa3b42f195a0e992696deb9ee6ec 100644 (file)
@@ -140,13 +140,13 @@ namespace Microsoft.Build.Internal
                        var parameters = submission.BuildManager.OngoingBuildParameters;
                        ProjectTargetInstance target;
                        
-                       // FIXME: check skip condition
-                       if (false)
-                               targetResult.Skip ();
                        // null key is allowed and regarded as blind success(!) (as long as it could retrieve target)
-                       else if (!request.ProjectInstance.Targets.TryGetValue (targetName, out target))
+                       if (!request.ProjectInstance.Targets.TryGetValue (targetName, out target))
                                targetResult.Failure (new InvalidOperationException (string.Format ("target '{0}' was not found in project '{1}'", targetName, project.FullPath)));
-                       else {
+                       else if (!args.Project.EvaluateCondition (target.Condition)) {
+                               event_source.FireMessageRaised (this, new BuildMessageEventArgs (string.Format ("Target '{0}' was skipped because condition '{1}' wasn't met.", target.Name, target.Condition), null, null, MessageImportance.Low));
+                               targetResult.Skip ();
+                       } else {
                                current_target = target;
                                try {
                                        if (!DoBuildTarget (targetResult, args))