Hi,

Currently when an AssemblyBuilder is created, and then its AssemblyName
is retrieved, the Version is always returned as 0.0.0.0, even when it -
the Version- was defined.

The attached patch defines it, and also minor changes to the tests are
attached.

Carlos.
Index: reflection.c
===================================================================
--- reflection.c	(revisión: 45600)
+++ reflection.c	(copia de trabajo)
@@ -4334,6 +4334,22 @@
 	else
 		assembly->assembly.aname.culture = g_strdup ("");
 
+        if (assemblyb->version) {
+                char **version = g_strsplit (mono_string_to_utf8 (assemblyb->version), ".", 4);
+                char **parts = version;
+                assembly->assembly.aname.major = atoi (*parts++);
+                assembly->assembly.aname.minor = atoi (*parts++);
+                assembly->assembly.aname.build = *parts != NULL ? atoi (*parts++) : 0;
+                assembly->assembly.aname.revision = *parts != NULL ? atoi (*parts) : 0;
+
+                g_strfreev (version);
+        } else {
+                assembly->assembly.aname.major = 0;
+                assembly->assembly.aname.minor = 0;
+                assembly->assembly.aname.build = 0;
+                assembly->assembly.aname.revision = 0;
+        }
+
 	assembly->run = assemblyb->access != 2;
 	assembly->save = assemblyb->access != 1;
 
Index: ChangeLog
===================================================================
--- ChangeLog	(revisión: 45600)
+++ ChangeLog	(copia de trabajo)
@@ -1,4 +1,8 @@
+2005-06-07  Carlos Alberto Cortez <[EMAIL PROTECTED]>
 
+	* reflection.c (mono_image_basic_init): Define
+	Version in MonoDynamicAssembly. 
+
 2005-06-06  Michael Meeks  <[EMAIL PROTECTED]>
 
 	* object.c (extend_interface_array): fix really silly
Index: AssemblyNameTest.cs
===================================================================
--- AssemblyNameTest.cs	(revisión: 45568)
+++ AssemblyNameTest.cs	(copia de trabajo)
@@ -283,6 +283,15 @@
 		return Assembly.LoadFrom (Path.Combine (tempDir, name.Name + ".dll"));
 	}
 
+	private AssemblyBuilder GenerateDynamicAssembly (AssemblyName name)
+	{
+		AssemblyBuilder ab = domain.DefineDynamicAssembly (
+				name,
+				AssemblyBuilderAccess.Run);
+
+		return ab;
+	}
+
 	[Test]
 	public void TestCultureInfo ()
 	{
@@ -302,17 +311,26 @@
 		Assembly a = GenerateAssembly (name);
 		Assert.AreEqual ("1.2.3.4", a.GetName ().Version.ToString ());
 
+		AssemblyBuilder ab = GenerateDynamicAssembly (name);
+		Assert.AreEqual ("1.2.3.4", ab.GetName ().Version.ToString ());
+
 		name = GenAssemblyName ();
 		name.Version = new Version (1, 2, 3);
 
 		a = GenerateAssembly (name);
 		Assert.AreEqual ("1.2.3.0", a.GetName ().Version.ToString ());
 
+		ab = GenerateDynamicAssembly (name);
+		Assert.AreEqual ("1.2.3.0", ab.GetName ().Version.ToString ());
+
 		name = GenAssemblyName ();
 		name.Version = new Version (1, 2);
 
 		a = GenerateAssembly (name);
 		Assert.AreEqual ("1.2.0.0", a.GetName ().Version.ToString ());
+
+		ab = GenerateDynamicAssembly (name);
+		Assert.AreEqual ("1.2.0.0", ab.GetName ().Version.ToString ());
 	}
 
 	[Test]
Index: ChangeLog
===================================================================
--- ChangeLog	(revisión: 45568)
+++ ChangeLog	(copia de trabajo)
@@ -1,3 +1,9 @@
+2005-06-07  Carlos Alberto Cortez <[EMAIL PROTECTED]>
+
+	* AssemblyNameTest.cs: Added tests to Version method,
+	in order to do additional checks with AssemblyBuilder
+	version.
+	
 2005-06-07 Gonzalo Paniagua Javier <[EMAIL PROTECTED]>
 
 	* AssemblyTest.cs: put back GetEntryAssembly, but this one is working.
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to