Закрыт
8 лет назад .
var obj = (CompiledTemplate) domain.CreateInstanceAndUnwrap (type.Assembly.FullName, type.FullName); ...
Я пытаюсь создать объект в домене приложения:
var type = typeof (CompiledTemplate);
var obj = (CompiledTemplate) domain.CreateInstanceAndUnwrap (
type.Assembly.FullName, type.FullName);
Тем не менее, я всегда получаю следующую ошибку:
Невозможно преобразовать прозрачный прокси в тип 'Mono.TextTemplating.CompiledTemplate'.
Я использую .NET 4.0, а не Mono, несмотря на то, что может предлагать пространство имен:)
Насколько я знаю, эта ошибка возникает, когда .NET считает, что тип и сборка не совсем совпадают в двух доменах . Однако при отладке FullName и Location идентичны. Отличается только свойство Assembly.Codebase - в дочернем AppDomain его расширение по какой-то причине имеет верхний регистр до «DLL».
Я попытался добавить обработчик AssemblyResolve в AppDomain, который использует Assembly.LoadFrom для явной загрузки имени файла, но расширение CodeBase по-прежнему отображается в верхнем регистре. Поскольку исходная сборка также была загружена с помощью Assembly.LoadFrom (через Mono.Addins), разница между значениями CodeBase кажется очень странной.
Есть ли предложения по исправлению или решению этой проблемы?