Am fost de lucru pe o caracteristică săptămâna trecută, care ar adăuga unele receptoare de eveniment la o anumită listă de instanţă. (I blogged un pic despre acest receptor lista aici).
Folosind linia de comanda, Am putut instala caracteristica cu nici o eroare (dar se vedea mai jos pentru eroare ascunse). Când am încercat să utilizeze caracteristica de pe site-ul, MOSS s-au plâns de "FileNotFoundException" eroare. Această intrare de blog descrie modul în care am rezolvat-o.
Aceasta este eroarea care MOSS mi-a arătat în browser-ul web:
Caracteristica ' b2cb42e3-4f0a-4380-otilia-1ef9cd526f20’ nu a fost instalat deoarece încărcarea de eveniment receptor montaj "xyzzyFeatureReceiver_0" nu a reușit: System.IO.FileNotFoundException: Nu a putut încărca fişierul sau asamblarea "xyzzyFeatureReceiver_0’ sau una dintre dependenţele sale. Sistemul nu poate găsi fişierul specificat.
Nume de fişier: "xyzzyFeatureReceiver_0’
la System.Reflection.Assembly.nLoad(AssemblyName fileName, Şir codeBase, Dovezi assemblySecurity, Adunarea locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
la System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Dovezi assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
la System.Reflection.Assembly.InternalLoad(Șir assemblyString, Dovezi assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
la System.Reflection.Assembly.Load(Șir assemblyString)
la Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Adunarea obligatoriu de logare este transformat OFF.
Pentru a permite Adunarea obligati eşec logare, setaţi valoarea de registru [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) pentru a 1.
Notă: Există unele penalizare de performanţă asociat cu Adunarea obligati eşec logare.
Pentru a dezactiva această caracteristică, eliminaţi valoarea registry [HKLMSoftwareMicrosoftFusion!EnableLog].
Ştiu cum de a provoca în mod deliberat această eroare: nu Instalaţi ansamblul în GAC. dar, a fost în GAC. I a instala în mod normal, ansambluri în GAC trăgându-le în c:\windowsassembly folderul utilizând windows explorer. M-am simţit niciodată 100% confortabil face acest lucru pentru că am crezut întotdeauna că gacutil a existat un motiv … aşa că am încercat care. El a făcut nici o diferenţă.
Am cautat pe Internet şi a găsit acest post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
Poster s-a întâmplat să fie utilizând aceeaşi rădăcină pic de cod (din cartea în interiorul AAC din această listă) aşa că a fost un semn de speranţă. Cu toate acestea, sugestia de decorare Adunarea cu un [asamblare: ] Directiva nu avea sens pentru mine. Am încercat-o oricum, şi am fost dreapta. El a făcut nici o diferenţă.
Apoi am observat că definiţia mea de clasă nu a fost publică. Am făcut-o publică şi că a făcut nici o diferenţă.
Următoarea, M-am dus la probleme de a permite "Adunarea obligati eşec jurnal" (urmând instrucţiunile utile şi precise oferite) şi acest lucru este în cazul în care lucrurile au început pentru a obţine interesant. Că log Arată-mi că runtime este în căutarea peste tot pe acel server pentru Adunarea mea. Chiar pare a fi căutaţi pentru el în meu medicament cabinet. dar … Acesta nu va căuta pentru el în GAC.
Am pus pe haina mea de iarnă şi du-te în căutare Internet din nou şi găsi că cineva a avut această problemă prea. Discuţie îndelungată în care postaţi badarau oprit în nimic şi nu pot găsi o soluţie.
Muta meu de asamblare într-unul dintre locurile de jurnal susţine că este în căutarea şi face un pic mai mult progres. Eu sunt recompensat cu o nouă eroare în browser-ul atunci când încerc să activaţi caracteristica:
Imposibil de creat caracteristică receptor obiect de asamblare "xyzzyFeatureReceiver_0", tip "Conchango.xyzzyFeatureReceiver" pentru caracteristica b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Valoarea nu poate fi nul.
Numele parametrului: tip
la System.Activator.CreateInstance(Tip tip, NonPublic booleene)
la System.Activator.CreateInstance(Tip tip)
la Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Timp pentru o ultima călătorie la internet!
Acest timp am afla, destul de previzibil, că MOSS probleme această eroare pentru că adunarea nu este în GAC.
Vreau pentru a obţine ceva pozitiv de acest lucru şi să încerce să se simtă un pic de mândru că am creat Fugar MSIL ansamblurilor de, dar nu este de lucru. Eu sunt pur şi simplu supărat. Eu personal mormăind "pui sau ouă" sub respiraţia mea.
În cele din urmă decid să punt. Am crea un proiect nou şi copiaţi/lipiţi codul la incredible-cloaked-from-the-GAC-assembly non-de lucru de proiect peste la acest nou proiect. (Mă uit pentru un pavilion de construi numit ceva de genul "Ascundere la Adunarea obligatoriu dacă instalat în GAC" dar nu pot găsi unul).
Am caracteristică a instala şi a activa şi … funcţionează! Deci, după ce toate că, Trebuit să practic ' reboot’ proiectul meu. Acest lucru este un alt motiv de ce urasc calculatoare.
Am făcut-învăţa ceva util din aceasta. Am avut fost instalarea caracteristici folosind linia de comanda stsadm toată ziua şi fost folosind "-vigoare" opţiunea din obişnuinţă. Pentru unii motiv, Nu am folosit - opţiune vigoare atunci când am instalat noul proiect. de data aceasta, Am făcut de fapt, cu adevărat uitaţi să copiaţi acest nou proiect de asamblare în GAC. Ca rezultat al, Am primit "FielNotFoundException" eroare. de data aceasta, Am luat de la stsadm, nu atunci când am încercat pentru a activa caracteristica prin intermediul browser-ul web. Deci, -vigoare, de fapt, joacă două roluri. Vă permite să re-a instala o caracteristică existente. De asemenea, vă permite să instalaţi o caracteristică trăsură pentru două persoane, care nu poate lucra în timpul rulării prin suprimarea eroare. Se spune, probabil, la fel de mult în ajutorul undeva, dar nu am observat-o.
</scop>
De asemenea, Am avut meu 2 de ore de la hysteric nintendoSIXTYFOURRRR-într-un rău-mod momente când am redenumit Namespace pe receptorul caracteristică, pentru a ajuta urmări în cazul în care a ta sau oricine altcineva a început.
Rădăcina problemei se află pe wsp dislocate în baza de date sharepoint. Am citit mesajul tau, şi în timp ce într-adevăr, repara problema avem o soluţie imens cu mai multe proiecte şi zeci de fişiere, astfel încât în mişcare totul nu a fost o opţiune.
Indiferent cât de mult vă actualizaţi GAC dumneavoastră sau vă asamblare, ce este oferindu-vă probleme este Adunarea în WSP curent instalat pe sharepoint.
Tu poate uşor de observat că încercarea de a retrage numai soluţia (care este în cazul în care eroarea se întâmplă). Tot ce se intampla pe "rerulare timp" ar trebui să fie considerate "dislocate wsp"-doar nu proiectul în sine.
Workaround mea a fost:
– Centrală admin: Soluţie de revocare
– stsadm: deletesolution
– Visual Studio => Proiect => Pachet
– stsadm: soluții-dosar ProjectbinDebugProject.wsp
– stsadm: deploysolution-numele project.wsp-imediată - allowgacdeployment-vigoare
– Visual Studio => Implementa
Am şters, de asemenea, folderele bin şi depanare la proiectul înainte de a rula mobilizare din nou, nu ar putea avea nici un efect, dar în valoare de comentarea.
Aceasta funcţionează atât pentru
"Caracteristică … nu a fost instalat deoarece încărcarea de asamblare de receptor eveniment"
şi
"Nu a reușit să creeze caracteristică receptor obiect de asamblare"
mulţumesc!
Francisco
Am petrecut cateva ore încercarea de a repara acest aceeaşi problemă şi a găsit o soluţie mai bună decât pur şi simplu recrearea proiectului.
Sa dovedit că anumite motive Visual Studio au stabilit obiectivul de a construi pentru x 86 în loc de x 64 sau MSIL – Adunarea a fost în GAC, nu doar acelaşi GAC care 64 pic SharePoint a fost în căutarea.