Ошибки при создании подкласса WebPart в другой сборке - PullRequest
1 голос
/ 16 сентября 2008

Я пытаюсь создать подкласс WebPart, который будет выступать в качестве родителя для всех WebParts, которые мы создаем. Если я создаю пустой класс в том же проекте, я могу наследовать от него, как и следовало ожидать. Однако, если я пытаюсь поместить его в другую сборку - ту, на которую я могу ссылаться и использовать классы - я получаю следующую ошибку:

Невозможно загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительной информации.

Другая информация, которая может иметь отношение (обычно я не являюсь разработчиком SharePoint): я собираю dll, ссылаюсь на них из проекта dev и копирую их в каталог / bin экземпляра SharePoint. Собрания все подписаны. Я пытаюсь выполнить развертывание с использованием функции VS2008 «развертывание».

К сожалению, это не похоже на ошибку, специфичную для SharePoint, и я не уверен, как решить проблему. Кто-нибудь испытывал это, и есть ли у вас какие-либо предложения?

1 Ответ

1 голос
/ 16 сентября 2008

ОК, я нашел проблему. Задача упаковки использует отражение по тем или иным причинам. Когда он обнаруживает, что ваш класс наследует от класса в другом домене, он пытается загрузить его, используя отражение. Однако рефлексия не выполняет политику привязки, поэтому домен не загружается.

Авторы программы упаковки могут решить эту проблему, добавив следующий код:

AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += new ResolveEventHandler(CurrentDomain_ReflectionOnlyAssemblyResolve);
Assembly a = System.Reflection.Assembly.ReflectionOnlyLoadFrom(filename);

static Assembly CurrentDomain_ReflectionOnlyAssemblyResolve(object sender, ResolveEventArgs args)
{
    return System.Reflection.Assembly.ReflectionOnlyLoad(args.Name);
}

Однако, если вам нужно решение для вашего проекта, просто добавьте сборки в GAC, и он сможет их разрешить.

...