Я пытаюсь разместить прокси класса текстового шаблона в новом домене приложений.
У меня есть старый код сценария, который выполняет нечто похожее, содержит этот рабочий код:
_ScriptAppDomain = AppDomain.CreateDomain(scriptDomainFriendlyName);
_ScriptProxy = (IScriptEngineProxy)_ScriptAppDomain.CreateInstanceAndUnwrap(
Assembly.GetExecutingAssembly().FullName,
"LVK.Scripting.ScriptEngineProxy");
Однако, когда я пытаюсь сделать это с моим новым классом со следующим
_TemplateDomain = AppDomain.CreateDomain(templateDomainFriendlyName);
_TemplateProxy = (ITemplateProxy)_TemplateDomain.CreateInstanceAndUnwrap(
Assembly.GetExecutingAssembly().FullName,
"TextTemplate.TemplateProxy");
, я просто получаю «FileNotFoundException» со следующими данными:
Не удалось загрузить файл или сборку'TextTemplate, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = bb70a2e62a722ace' или одна из его зависимостей.Системе не удается найти указанный файл.
Чего мне не хватает?
По сути, у меня есть класс Template в пространстве имен TextTemplate (и сборка), который пытается загрузить TemplateProxyclass (происходит от MarshalByRefObject) в новый домен приложения, но, похоже, моя основная сборка не загружена в этот домен.
Это работает, если я использую более старый код, но не с этим новым, но я могу 'Разница не заметна.
Вот еще несколько деталей:
- Сборка не зарегистрирована в GAC (не было и старой, которая работает)
- У меня естьне переопределяет ни одно событие AssemblyResolve (как и старое, которое работает)
Я не против обработки события AssemblyResolve, если это то, что нужно.Мне показалось странным, что мой старый код работал, а это не так.