Solution au problème: “FileNotFoundException” Avec mon récepteur de fonctionnalité.

Je travaillais sur une fonctionnalité la semaine dernière qui ajouterait des récepteurs d'événements à une instance de liste spécifique. (J'ai expliqué dans un blog un peu sur ce récepteur liste ici).

À l'aide de la ligne de commande, Je pourrais installer la fonctionnalité sans erreur (mais pour l'erreur cachée, voir ci-dessous). Quand j'ai essayé de déployer la fonctionnalité sur le site, MOUSSE s'est plaint d'une FileNotFoundException »" erreur. Ce blog décrit comment je l'ai résolu.

C'est l'erreur qui mousse qui m'a été montré dans le navigateur web:

Fonctionnalité ' b2cb42e3-4f0a-4380-boulette-1ef9cd526f20’ ne pourrait pas être installé car le chargement de l'assemblage de récepteur événement « xyzzyFeatureReceiver_0" n'a pas: System.IO.FileNotFoundException: N'a pas pu charger fichier ou l'assembly ' xyzzyFeatureReceiver_0’ ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.
Nom de fichier: ' xyzzyFeatureReceiver_0’
à System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Preuve assemblySecurity, Assemblée locationHint, StackCrawlMark& stackMark, ThrowOnFileNotFound booléenne, ForIntrospection booléenne)
à System.Reflection.Assembly.InternalLoad(AssemblyRef AssemblyName, Preuve assemblySecurity, StackCrawlMark& stackMark, ForIntrospection booléenne)
à System.Reflection.Assembly.InternalLoad(String assemblyString, Preuve assemblySecurity, StackCrawlMark& stackMark, ForIntrospection booléenne)
à System.Reflection.Assembly.Load(String assemblyString)
à Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
AVT: Assemblage liaison journalisation est activée OFF.
Pour activer l'Assemblée lier échec enregistrement, Définissez la valeur de Registre [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) À 1.
Note: Il y a quelque peine de performance associé avec un enregistrement d'échec lier l'Assemblée.
Pour désactiver cette caractéristique, Supprimez la valeur de Registre [HKLMSoftwareMicrosoftFusion!EnableLog].

Résoudre les problèmes avec Windows SharePoint Services.

Je sais pas comment pour délibérément provoquer cette erreur: ne pas installer l'assembly dans le GAC. Mais, C'est dans le GAC. J'ai normalement installer des assemblys dans le global assembly cache en les faisant glisser dans le c:\dossier de WINDOWSassembly à l'aide de l'Explorateur windows. Je n'ai jamais senti 100% confortable de faire cela parce que j'ai toujours pensé que gacutil existait pour une raison … alors j'ai essayé qui. Il ne faisait aucune différence.

J'ai cherché les Internets et trouvé ce post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

L'affiche est arrivé d'utiliser la même racine bit du code (extrait du livre à l'intérieur de WSS dans cette liste) donc ça a été un signe d'espoir. Cependant, la suggestion de décorer l'ensemble avec une [Assemblée: ] directive n'a pas de sens pour moi. J'ai essayé quand même et j'avais raison. Il ne faisait aucune différence.

Puis j'ai remarqué que ma définition de la classe n'était pas publique. J'ai rendue publique et qui ne faisait aucune différence.

Prochaine, Je suis allé à la peine de permettre à le "Assemblée lier échec Journal" (en suivant les instructions utiles et exactes fournies) et c'est où les choses ont commencé à devenir intéressant. Ce journal me montre que le runtime recherche dans le monde sur ce serveur pour mon montage. Il semble même être recherchant dans mon armoire à pharmacie. Mais … il ne sera pas chercher dans le GAC.

J'ai mis sur ma veste hiver et aller chercher les Internets à nouveau et de trouver que quelqu'un a eu ce problème aussi. La longue discussion dans cette signalisation peters au large en rien et je ne peux pas trouver une solution.

Je propose mon Assemblée dans un des endroits que le journal prétend c'est à la recherche et j'ai progresser un peu plus. Je suis récompensé avec une nouvelle erreur dans le navigateur lorsque j'essaie d'activer la fonction:

Impossible de créer l'objet récepteur feature d'assembly « xyzzyFeatureReceiver_0 », tapez "Conchango.xyzzyFeatureReceiver" pour la fonction b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Valeur ne peut pas être null.
Nom du paramètre: type
à System.Activator.CreateInstance(Type de type, NonPublic booléenne)
à System.Activator.CreateInstance(Type de type)
à Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Résoudre les problèmes avec Windows SharePoint Services.

Temps pour un dernier voyage à l'Internets!

Cette fois j'ai trouver, assez prévisible, que MOSS publie cette erreur parce que l'assembly n'est pas dans le GAC.

Je veux obtenir quelque chose de positif de cela et essayer de se sentir un peu fière que j'ai créé le Fugitif des assemblys MSIL, mais il ne fonctionne pas. Je suis tout simplement agacé. Je me surprends murmurant « œuf ou la poule" sous mon souffle.

Je décide finalement de botté de dégagement. Je crée un projet entièrement nouveau et copier/coller le code du projet de non-travail incredible-cloaked-from-the-GAC-assembly plus à ce nouveau projet. (Je cherche un drapeau de génération appelé quelque chose comme "cacher de si installé dans le GAC de liaison d'assembly" mais n'y parvient).

J'ai installer la fonctionnalité et l'activer et … Il fonctionne! Si, Après tout ça, J'ai dû fondamentalement ' redémarrer’ mon projet. Il s'agit d'une autre raison pourquoi je déteste les ordinateurs.

J'ai appris quelque chose d'utile de ce. J'avais été l'installation en utilisant la ligne de commande stsadm tout au long de la journée et utilise le «-force" option par habitude. Pour une raison quelconque, Je n'ai pas utilisé le - option de force quand j'ai installé le nouveau projet. Cette heure, Je l'ai fait en fait, vraiment oublier de copier l'assembly du projet de cette nouvelle dans le global assembly cache. Comme un résultat, J'ai reçu cette FielNotFoundException"" erreur. Cette heure, J'ai obtenu à partir de stsadm, pas quand j'ai essayé d'activer la fonctionnalité via le navigateur web. Si, -Force joue deux rôles. Il vous permet de ré-installer une fonctionnalité existante. Il vous permet également d'installer une fonctionnalité de buggy qui ne peuvent pas travailler à l'exécution par la suppression de l'erreur. Il dit probablement autant dans l'aide quelque part, mais j'ai jamais remarqué.

</fin>

3 réflexions sur "Solution au problème: “FileNotFoundException” Avec mon récepteur de fonctionnalité.

  1. Francisco

    Aussi, J'ai eu mon 2 heures des moments de nintendoSIXTYFOURRRR-in-a-bad-way hystérique quand j'ai renommé le Namespace sur le récepteur de fonctionnalité, pour aider à suivre où toi ou quelqu'un d'autre commence.

    Réponse
  2. Francisco

    La racine du problème réside sur le FSSF déployé dans la base de données sharepoint. J'ai lu votre message et même si elle résout en effet le problème nous avons une énorme solution avec plusieurs projets, et des dizaines de fichiers si émouvant tout ce n'était pas une option.

    Peu importe combien vous mettez à jour votre GAC ou votre Assemblée, ce qui vous donne mal est l'Assemblée dans le FSSF actuel installé sur sharepoint.

    Vous pouvez facilement remarquer qu'en essayant de rentrer seulement la solution (qui est où l'erreur se produit). Tout ce qui se passe à l'heure de rentrée"" sont à considérer « wsp déployée »-seulement pas le projet lui-même.

    Ma solution a été:

    – Central admin: Annuler la solution
    – Stsadm: deletesolution
    – Visual Studio => Projet => Paquet
    – Stsadm: addsolution-dossier ProjectbinDebugProject.wsp
    – Stsadm: deploysolution-name project.wsp-immédiat - allowgacdeployment-force
    – Visual Studio => Déployer

    J'ai également supprimé les dossiers bin et debug du projet avant d'exécuter à nouveau les déployer, ne peut pas avoir d'effet mais mérite des remarques.

    Cela fonctionne pour les deux

    Fonctionnalité" … ne pourrait pas être installé car le chargement de l'assembly du récepteur d'événements"
    et
    "Impossible de créer l'objet de récepteur de fonctionnalité de l'Assemblée"

    Merci!
    Francisco

    Réponse
  3. Tom Clarkson

    Je viens de passer quelques heures à essayer de résoudre ce même problème et trouvé une meilleure solution que simplement recréer le projet.

    Il s'est avéré que pour une raison quelconque Visual Studio avait fixé l'objectif de la génération x 86 au lieu de x 64 ou MSIL – l'Assemblée a été dans le GAC, tout simplement pas le GAC de même que 64 bit SharePoint cherchait.

    Réponse

Laisser une réponse

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *