我正在为Unity游戏(Subnautica)制作一个插件加载器。加载机制本身工作正常,但我想将程序集加载到一个单独的应用程序域,所以我也可以在运行时卸载它们。
但是,调用AppDomain.CreateDomain(string)
会导致Unity崩溃,并在
未知导致访问冲突(0xc0000005) 在模块中未知0033:049f7717 ...
从位置00000000读取导致访问冲突。
和游戏生成的日志
0x0000000005048C6D((< unknown>))
错误:SymGetSymFromAddr64,GetLastError:'找不到指定的模块。'
错误:SymGetModuleInfo64,GetLastError:'动态链接库(DLL)初始化例程失败。'
我尝试将直接调用AppDomain.CreateDomain
的代码注入到游戏代码中,并尝试使用AppDomain.CreateDomain
注入加载调用Assembly.Load
的dll的代码,两种方法同一消息崩溃。
Unity版本是5.4.4f1,我在Windows 10上,调用AppDomain.CreateDomain
的程序集使用.net 3.5。 This是Unity创建的error.log和Subnautica创建的output_log.txt中的堆栈跟踪。
有没有人知道什么可能导致Unity崩溃?
PS,我确切地知道AppDomain.CreateDomain
导致问题。