Mik*_*son 11 .net c# remoting appdomain
我正在尝试在appdomain中创建一个对象:
var type = typeof (CompiledTemplate);
var obj = (CompiledTemplate) domain.CreateInstanceAndUnwrap (
type.Assembly.FullName, type.FullName);
Run Code Online (Sandbox Code Playgroud)
但是,我总是收到以下错误:
无法转换透明代理以键入"Mono.TextTemplating.CompiledTemplate".
我运行的是.NET 4.0,而不是Mono,尽管命名空间可能会提示:)
据我所知,当.NET认为类型和程序集在两个域中不完全匹配时会发生此错误.但是,在调试时,FullName和Location是相同的.只有Assembly.Codebase属性不同 - 在子AppDomain中,由于某种原因,它的扩展名大写为"DLL".
我已经尝试将AssemblyResolve处理程序添加到AppDomain,它使用Assembly.LoadFrom显式加载文件名,但CodeBase的扩展仍然是大写的.由于原始程序集也加载了Assembly.LoadFrom(通过Mono.Addins),CodeBase值之间的差异似乎很奇怪.
有关修复或解决此问题的建议吗?