Merge pull request #1122 from PoppermostProductions/master
authorRodrigo Kumpera <kumpera@gmail.com>
Mon, 14 Jul 2014 14:54:50 +0000 (10:54 -0400)
committerRodrigo Kumpera <kumpera@gmail.com>
Mon, 14 Jul 2014 14:54:50 +0000 (10:54 -0400)
Added new mono_domain_set_config function; used to fix ConfigurationErro...

mono/metadata/appdomain.c
mono/metadata/appdomain.h
msvc/libmonoruntime.vcxproj
msvc/mono.def
msvc/monosgen.def
msvc/monosgen64.def

index 5b3294aa6b65d316cbc37847ead35ca1783b5909..3dfae0da5a86a2dedebb3289b1de1bf64d83489c 100644 (file)
@@ -403,6 +403,25 @@ mono_domain_create_appdomain (char *friendly_name, char *configuration_file)
        return mono_domain_from_appdomain (ad);
 }
 
+/**
+ * mono_domain_set_config:
+ * @domain: MonoDomain initialized with the appdomain we want to change
+ * @base_dir: new base directory for the appdomain
+ * @config_file_name: path to the new configuration for the app domain
+ *
+ * Used to set the system configuration for an appdomain
+ *
+ * Without using this, embedded builds will get 'System.Configuration.ConfigurationErrorsException: 
+ * Error Initializing the configuration system. ---> System.ArgumentException: 
+ * The 'ExeConfigFilename' argument cannot be null.' for some managed calls.
+ */
+void
+mono_domain_set_config (MonoDomain *domain, const char *base_dir, const char *config_file_name)
+{
+       MONO_OBJECT_SETREF (domain->setup, application_base, mono_string_new (domain, base_dir));
+       MONO_OBJECT_SETREF (domain->setup, configuration_file, mono_string_new (domain, config_file_name));
+}
+
 static MonoAppDomainSetup*
 copy_app_domain_setup (MonoDomain *domain, MonoAppDomainSetup *setup)
 {
index 3b3884330f903df3a395e3275f7548dbdd9b98af..e0c2f671c2e839e8cc2a90515587741ac7cd27c7 100644 (file)
@@ -66,6 +66,9 @@ mono_domain_create         (void);
 MONO_API MonoDomain *
 mono_domain_create_appdomain (char *friendly_name, char *configuration_file);
 
+MONO_API void
+mono_domain_set_config (MonoDomain *domain, const char *base_dir, const char *config_file_name);
+
 MONO_API MonoDomain *
 mono_domain_get            (void);
 
index 4520e2a0927f5c15e5f84281c34ac0a59ec6fac9..3635bdae2d58d611d345399c4860b7c3f3a55e6b 100644 (file)
     <ClCompile Include="..\mono\metadata\threadpool.c" />\r
     <ClCompile Include="..\mono\metadata\threads.c" />\r
     <ClCompile Include="..\mono\metadata\verify.c" />\r
+    <ClCompile Include="..\mono\mini\mini-cross-helpers.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\mono\metadata\appdomain.h" />\r
index 6a1f0d49d5448d79a932eb4435c2f4a3c42ac8bb..61d1779c336f0c0e92e509eaf94a9c5b3e3d0100 100644 (file)
@@ -243,6 +243,7 @@ mono_domain_has_type_resolve
 mono_domain_is_unloading
 mono_domain_owns_vtable_slot
 mono_domain_set
+mono_domain_set_config
 mono_domain_set_internal
 mono_domain_try_type_resolve
 mono_domain_try_unload
index 0cbc870c9a4cba7116c78ecd693635a26aec488e..2c7a641e8a7392e9b03dabf1f4a5a54ca99f5cb4 100644 (file)
@@ -244,6 +244,7 @@ mono_domain_has_type_resolve
 mono_domain_is_unloading
 mono_domain_owns_vtable_slot
 mono_domain_set
+mono_domain_set_config
 mono_domain_set_internal
 mono_domain_try_type_resolve
 mono_domain_try_unload
index 84f306ab796ee877df04c105250f037d9874768d..d1c62a89b70eecfd3d9b2c8bcdbe7fbe8ab6fb94 100644 (file)
@@ -243,6 +243,7 @@ mono_domain_has_type_resolve
 mono_domain_is_unloading
 mono_domain_owns_vtable_slot
 mono_domain_set
+mono_domain_set_config
 mono_domain_set_internal
 mono_domain_try_type_resolve
 mono_domain_try_unload