Pregunta

Estoy intentando crear una subclase de WebPart que actuará como padre de cualquier WebPart que creemos.Si creo una clase vacía en el mismo proyecto, puedo heredarla como era de esperar.Sin embargo, si intento colocarlo en otro ensamblado, uno al que haya podido hacer referencia y usar clases, aparece el siguiente error:

No se puede cargar uno o más de los tipos solicitados.Recupere la propiedad LoaderExceptions para obtener más información.

Otra información que puede ser pertinente (normalmente no soy desarrollador de SharePoint):Compilo los archivos DLL, los hago referencia desde el proyecto de desarrollo y los copio en el directorio /bin de la instancia de SharePoint.Todas las asambleas están firmadas.Estoy intentando realizar la implementación utilizando la función 'implementar' de VS2008.

Desafortunadamente, esto no parece ser un error específico de SharePoint y no estoy seguro de cómo resolver el problema.¿Alguien ha experimentado esto y tiene alguna sugerencia?

¿Fue útil?

Solución

Bien, encontré el problema.La tarea de empaquetado utiliza la reflexión por alguna razón u otra.Cuando descubre que su clase hereda de una clase en otro dominio, intenta cargarla mediante la reflexión.Sin embargo, la reflexión no vincula la política, por lo que el dominio no se carga.

Los autores del programa de empaquetado pudieron solucionar esto agregando el siguiente 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);
}

Sin embargo, si necesita una solución para su proyecto, simplemente agregue los ensamblados al GAC y éste podrá resolverlos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top