Hi,

I am trying to embed mono... and I ran into a problem with the code:

   monoMethodDesc = mono_method_desc_new("Script:Main", 0);
   method = mono_method_desc_search_in_image(monoMethodDesc,
   monoEngine->image);


It is returning a method on the cs code:

   public class Script
   {
      static public void Main ()
      {
        ScriptEngine.report("--Main Called ");
      }
   }


but it is also returning a method on the cs code (with the wrong class name):

   public class Script*2*
   {
      static public void Main ()
      {
        ScriptEngine.report("--Main Called ");
      }
   }

while it should only return for:

   monoMethodDesc = mono_method_desc_new("Script2:Main", 0);


Am i doing something wrong or is this a bug? It seem that mono_method_desc_search_in_image is returning a value if the actual class name is starting with the given  class name.... so, the same method is returned if I look for "Script:Main" but the declared class is "Script:Main", "Script_test:Main" or "Script2:Main"...

and a question:
is there a way to know if mono_domain_unload was successful or not?

I am creating an app domain per script so that I can recompile and reload the script at will... I do not detect any error, but the new script seems not to replace the old one...
Basically, I am doing:

   res = mono_domain_set(rootDomain, FALSE);
   mono_domain_unload(monoEngine->domain);
   monoEngine->domain =
   mono_domain_create_appdomain("ScriptEngine-sub", NULL);

   data = readFile(f, &dataLen);
   fclose(f);
   monoEngine->image = mono_image_open_from_data_with_name(data, dataLen,
   TRUE /* copy data */,
   &status,
   FALSE /* ref only */,
   monoEngine->fileName);
      free(data);
      if (status != MONO_IMAGE_OK || monoEngine->image == NULL)
      {
        return FALSE;
      }

        // load the assembly
      monoEngine->assembly =
   mono_assembly_load_from_full(monoEngine->image,
   monoEngine->fileName,
   &status, FALSE);
      if (status != MONO_IMAGE_OK || monoEngine->assembly == NULL)
      {
        mono_image_close(monoEngine->image);
        return FALSE;
      }

but it does not seem to work. The code that runs is always the first loaded one!!

I also added the following code to my engine:

   mono_trace_set_log_handler(monoLogCallback, NULL);
   mono_trace_set_print_handler(monoPrintCallback);
   mono_trace_set_printerr_handler(monoPrintCallback);
   mono_trace_set_level_string ("debug");


but it is reporting debug info only on the first run... is there a way to having it working on every run?

Lastly, Is there a way to compile cs source without launching a

   system("msc.code.cs -target:library");

thanks in advance

Pierre



_______________________________________________
Mono-list maillist  -mono-l...@lists.dot.net
http://lists.dot.net/mailman/listinfo/mono-list

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.dot.net
http://lists.dot.net/mailman/listinfo/mono-devel-list

Reply via email to