[xbuild] Fix bug #660508 .
authorAnkit Jain <radical@corewars.org>
Mon, 20 Dec 2010 14:58:57 +0000 (20:28 +0530)
committerAnkit Jain <radical@corewars.org>
Mon, 20 Dec 2010 15:03:58 +0000 (20:33 +0530)
Use correctly escaped project+target names when
specifying project dependencies in the project
file generated from a .sln file.

mcs/tools/xbuild/SolutionParser.cs

index 30e7b38a550997e1fb9ccb90461da6ee8168c537..c3fc69a46d150ca72c5f402e706a52fda7763722 100644 (file)
@@ -751,20 +751,10 @@ namespace Mono.XBuild.CommandLine {
                                        string target_name = GetTargetNameForProject (project.Name, buildTarget);
                                        Target target = p.Targets.AddNewTarget (target_name);
                                        target.Condition = "'$(CurrentSolutionConfigurationContents)' != ''"; 
-
-                                       if (project.Dependencies.Count > 0) {
-                                               StringBuilder dependencies = new StringBuilder ();
-                                               foreach (ProjectInfo dependentInfo in project.Dependencies.Values) {
-                                                       if (dependencies.Length > 0)
-                                                               dependencies.Append (";");
-                                                       if (IsBuildTargetName (dependentInfo.Name))
-                                                               dependencies.Append ("Solution:");
-                                                       dependencies.Append (dependentInfo.Name);
-                                                       if (buildTarget != "Build")
-                                                               dependencies.Append (":" + buildTarget);
-                                               }
-                                               target.DependsOnTargets = dependencies.ToString ();
-                                       }
+                                       if (project.Dependencies.Count > 0)
+                                               target.DependsOnTargets = String.Join (";",
+                                                               project.Dependencies.Values.Select (
+                                                                       di => GetTargetNameForProject (di.Name, buildTarget)).ToArray ());
 
                                        foreach (TargetInfo targetInfo in solutionTargets) {
                                                BuildTask task = null;