Erreurs lors de la création de la sous-classe WebPart dans un autre assemblage

StackOverflow https://stackoverflow.com/questions/69164

  •  09-06-2019
  •  | 
  •  

Question

J'essaie de créer une sous-classe de WebPart qui agira en tant que parent de toutes les pièces Web que nous créons. Si je crée une classe vide dans le même projet, je peux en hériter comme on pourrait s'y attendre. Cependant, si j'essaie de le placer dans un autre assemblage (celui auquel j'ai été capable de faire référence et à partir duquel utiliser des classes), j'obtiens le message d'erreur suivant:

Impossible de charger un ou plusieurs des types demandés. Récupérez la propriété LoaderExceptions pour plus d'informations.

Autres informations pouvant être pertinentes (normalement, je ne suis pas un développeur SharePoint): je compile les dll, les référence depuis le projet dev et je les copie dans le répertoire / bin de l'instance SharePoint. Les assemblées sont toutes signées. J'essaie de déployer à l'aide de la fonction de déploiement de VS2008.

Malheureusement, cela ne semble pas être une erreur spécifique à SharePoint et je ne sais pas comment résoudre le problème. Quelqu'un en at-il déjà fait l'expérience et avez-vous des suggestions?

Était-ce utile?

La solution

OK, j'ai trouvé le problème. La tâche d'emballage utilise la réflexion pour une raison ou une autre. Lorsqu'il trouve que votre classe hérite d'une classe d'un autre domaine, il tente de la charger à l'aide de la réflexion. Cependant, réflexion ne fait pas la politique de liaison, donc ce domaine n'est pas chargé.

Les auteurs du programme d'emballage pourraient résoudre ce problème en ajoutant le code suivant:

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

Toutefois, si vous avez besoin d'une solution pour votre projet, ajoutez simplement les assemblages au GAC pour qu'il puisse les résoudre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top