我试图在新的AppDomain中托管文本模板类代理.
我有一些旧的脚本代码,它们执行类似的操作,包含以下代码:
_ScriptAppDomain = AppDomain.CreateDomain(scriptDomainFriendlyName);
_ScriptProxy = (IScriptEngineProxy)_ScriptAppDomain.CreateInstanceAndUnwrap(
Assembly.GetExecutingAssembly().FullName,
"LVK.Scripting.ScriptEngineProxy");
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用我的新课程时,请使用以下内容
_TemplateDomain = AppDomain.CreateDomain(templateDomainFriendlyName);
_TemplateProxy = (ITemplateProxy)_TemplateDomain.CreateInstanceAndUnwrap(
Assembly.GetExecutingAssembly().FullName,
"TextTemplate.TemplateProxy");
Run Code Online (Sandbox Code Playgroud)
我只是得到"FileNotFoundException",其中包含以下详细信息:
无法加载文件或程序集'TextTemplate,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = bb70a2e62a722ace'或其依赖项之一.该系统找不到指定的文件.
我错过了什么?
基本上,我在TextTemplate命名空间(和程序集)中有一个Template类,它试图将TemplateProxy类(从MarshalByRefObject降序)加载到新的appdomain中,但看起来我的主程序集没有加载到这个域中.
如果我使用较旧的代码,但是没有使用这个新代码,这是有效的,但我无法发现差异.
这里有一些更多的细节:
如果需要的话,我不反对处理AssemblyResolve事件.我发现我的旧代码工作很奇怪,但事实并非如此.
Sam*_*m B 12
假设您的程序集与当前应用程序库位于同一目录中,请尝试指定Application Base:
AppDomain.CreateDomain(templateDomainFriendlyName, null,
new AppDomainSetup
{
ApplicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4868 次 |
| 最近记录: |