Hello,

I've noticed that xbuild tries to load System.dll from 2.1 profile and
will often fail to
build target projects because it in general targets 2.0. The attached
hacky patch is
to avoid such unexpected version mismatch.

(If we really need to load 2.1 System.dll in the future, building
MS.Build.Tasks under
2.1 profile will solve it.)

Atsushi Eno

Index: Microsoft.Build.Tasks/AssemblyResolver.cs
===================================================================
--- Microsoft.Build.Tasks/AssemblyResolver.cs	(リビジョン 96527)
+++ Microsoft.Build.Tasks/AssemblyResolver.cs	(作業コピー)
@@ -80,6 +80,8 @@
 
 						if (!gac.ContainsKey (assembly_info.Name))
 							gac.Add (assembly_info.Name, new Dictionary <Version, string> ());
+						if (gac [assembly_info.Name].ContainsKey (version))
+							throw new Exception (String.Format ("{0} for {1} alraedy exists", file, version));
 						gac [assembly_info.Name].Add (version, file);
 					}
 				}
@@ -130,6 +132,10 @@
 			dic [name.Name].Keys.CopyTo (versions, 0);
 			Array.Sort (versions, (IComparer <Version>) null);
 			Version highest = versions [versions.Length - 1];
+#if !NET_2_1
+			if (name.Name.StartsWith ("System") && highest == new Version (2, 1, 0, 0))
+				highest = versions [versions.Length - 2];
+#endif
 			return dic [name.Name] [highest];
 		}
 
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to