Allow mono_install_assembly_preload_hook() to provide mscorlib.dll
authorJonathan Pryor <jonpryor@vt.edu>
Wed, 29 Sep 2010 02:26:03 +0000 (22:26 -0400)
committerJonathan Pryor <jonpryor@vt.edu>
Wed, 29 Sep 2010 02:45:41 +0000 (22:45 -0400)
In some embedding scenarios, mscorlib.dll may be present in a non-standard
location (outside of MONO_PATH) or with an alternate filename.

Use the installed assembly preload hooks to search for mscorlib.dll before
falling back to the default lookup strategy.

mono/metadata/assembly.c

index d07174134b4768483910358652f0b941ca9145cd..ec56fd53ee3f461df4e76f458a27467d6a1332d7 100644 (file)
@@ -2555,6 +2555,7 @@ MonoAssembly*
 mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *status)
 {
        char *corlib_file;
+       MonoAssemblyName *aname;
 
        if (corlib) {
                /* g_print ("corlib already loaded\n"); */
@@ -2576,7 +2577,13 @@ mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *
                        return corlib;
        }
 #endif
-       
+
+       aname = mono_assembly_name_new ("mscorlib.dll");
+       corlib = invoke_assembly_preload_hook (aname, assemblies_path);
+       mono_assembly_name_free (aname);
+       if (corlib != NULL)
+               return corlib;
+
        if (assemblies_path) {
                corlib = load_in_path ("mscorlib.dll", (const char**)assemblies_path, status, FALSE);
                if (corlib)