Pergunta

Estou tentando criar uma subclasse de WebPart que atuará como pai de qualquer WebParts que criarmos.Se eu criar uma classe vazia no mesmo projeto, poderei herdar dela como seria de esperar.No entanto, se eu tentar colocá-lo em outro assembly - um do qual consegui referenciar e usar classes - recebo o seguinte erro:

Não foi possível carregar um ou mais dos tipos solicitados.Recupere a propriedade LoaderExceptions para obter mais informações.

Outras informações que podem ser pertinentes (normalmente não sou desenvolvedor de SharePoint):Eu compilo as DLLs, faço referência a elas no projeto de desenvolvimento e as copio para o diretório /bin da instância do SharePoint.As assembleias estão todas assinadas.Estou tentando implantar usando o recurso 'deploy' do VS2008.

Infelizmente, este não parece ser um erro específico do SharePoint e não sei como resolver o problema.Alguém já passou por isso e tem alguma sugestão?

Foi útil?

Solução

OK, encontrei o problema.A tarefa de empacotamento usa reflexão por algum motivo ou outro.Quando descobre que sua classe herda de uma classe em outro domínio, ele tenta carregá-la usando reflexão.No entanto, a reflexão não faz política vinculativa, portanto esse domínio não é carregado.

Os autores do programa de empacotamento poderiam resolver isso adicionando o seguinte código:

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);
}

Porém, se você precisar de uma solução para o seu projeto, basta adicionar os assemblies ao GAC e ele poderá resolvê-los.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top