Jo estava treballant en un tret de la setmana passada que vols afegir alguns auriculars d'esdeveniment a una instància de llista específica. (He blogged una mica sobre aquell receptor llista aquí).
Utilitzant la línia d'ordres, Podria instal·lar el tret amb cap error (però vegeu més avall per l'error ocult). Quan vaig intentar desplegar el tret en el lloc, MOLSA queixat d'una «FileNotFoundException" error. Aquesta entrada del blog es descriu com el resolia.
Aquest és l'error que MOSS em va mostrar en el navegador web:
Tret d ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ no es podria instal·lar perquè la càrrega de l'assemblat receptor d'esdeveniment "xyzzyFeatureReceiver_0" ha fallat: System.IO.FileNotFoundException: No es pot carregar arxiu o Assemblea ' xyzzyFeatureReceiver_0’ o una de les seves dependències. El sistema no pot trobar el fitxer especificat.
Nom d'arxiu: ' xyzzyFeatureReceiver_0’
a System.Reflection.Assembly.nLoad(Nom del fitxer AssemblyName, Corda codegraden, Proves assemblySecurity, Muntatge locationHint, StackCrawlMark& stackMark, ThrowOnFileNotFound booleana, ForIntrospection booleana)
a System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Proves assemblySecurity, StackCrawlMark& stackMark, ForIntrospection booleana)
a System.Reflection.Assembly.InternalLoad(Corda assemblyString, Proves assemblySecurity, StackCrawlMark& stackMark, ForIntrospection booleana)
a System.Reflection.Assembly.Load(Corda assemblyString)
a Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Registre de muntatge vinculant és convertida OFF.
Permetre registre de fracàs Assemblea s'uneixen, establir el valor de registres [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) per 1.
Nota: Hi ha algun penal d'actuació associades a registre de fracàs Assemblea s'uneixen.
Per desactivar aquesta funció, treure el valor de registres [HKLMSoftwareMicrosoftFusion!EnableLog].
Sé com provocar deliberadament aquell error: no instal·li l'Assemblea al GAC. Però, era la GAC. Jo normalment instal·la els assemblats a la GAC arrossegant-los a la c:\windowsassembly carpeta utilitzant Explorador de windows. Mai m'he sentit 100% còmode fent això perquè sempre he pensat que el gacutil existia per una raó … així provava que. Feia cap diferència.
Buscava la Internets i trobava aquest lloc: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
El cartell va passar a estar utilitzant el mateix bit arrel del codi (del llibre WSS dins d'aquesta llista) Així que era un signe d'esperança. No obstant això, el suggeriment de la decoració de l'Assemblea amb una [l'Assemblea: ] Directiva no tenia sentit per a mi. De tota manera ho tastava i estava bé. Feia cap diferència.
Llavors em vaig adonar que la meva definició de classe no era pública. Ho vaig fer públic i que va fer cap diferència.
Següent, Vaig anar a la molèstia d'habilitar el "muntatge s'uneixen fracàs registre" (seguint les instruccions precises i útils, sempre) i aquí és on les coses van començar a obtenir interessants. Aquest registre em mostra que el temps d'execució és buscar a tot arreu en aquest servidor meu Assemblea. Fins i tot apareix a buscar-lo a la meva farmaciola. Però … això no cercar-lo en la GAC.
Vaig posar en la meva jaqueta d'hivern i anar a buscar la Internet una altra vegada i trobar que algú ha tingut aquest problema massa. La llarga discussió en aquest anunci peters fora en res i no puc trobar una solució.
Moc la meva Assemblea en un dels llocs que el registre afirma que està buscant i vaig avançar una mica més. Jo estic recompensat amb un nou error al navegador quan I intenten activar la funció de:
No ha pogut crear l'objecte receptor de tret de "xyzzyFeatureReceiver_0" de l'Assemblea, tipus "Conchango.xyzzyFeatureReceiver" per b2cb42e3-4f0a-4380-aaba-1ef9cd526f20 tret: System.ArgumentNullException: Valor no poden ser nul·les.
Nom del paràmetre: tipus
a System.Activator.CreateInstance(Tipus tipus, Booleans no públics)
a System.Activator.CreateInstance(Tipus tipus)
a Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Temps per a un últim viatge de l'Internets!
Aquesta vegada vaig esbrinar, previsiblement prou, Aquesta molsa emet aquest error perquè l'Assemblea no és al GAC.
Vull aconseguir alguna cosa positiva d'aquesta i intentar sentir una mica orgullós que he creat la Fugitiu d'assemblees MSIL, però no està funcionant. Simplement suplements. Em trobo murmurant "o la gallina" sota el meu alè.
Finalment decideix punt. Crear un projecte totalment nou i copiar i enganxar el codi del projecte incredible-cloaked-from-the-GAC-assembly inhàbils per a aquest nou projecte. (Vaig buscar una bandera de complexió anomenar quelcom així com "Amagatall d'Assemblea vinculant si s'instal·la al GAC" però no puc trobar una).
Puc instal lar el tret i activar-lo i … funciona! Així, després de tot allò, Havia bàsicament d ' arrencar’ meu projecte. Això és una altra raó per què odio ordinadors.
Vaig aprendre alguna cosa útil d'aquest. Havia estat instal·lant trets utilitzant la línia d'ordres de stsadm tot el dia i l'estat utilitzant els "-força" opció per hàbit. Per alguna raó, Jo no ús-opció força quan I instal·lava el nou projecte. Aquesta vegada, Feia realment, realment us oblideu copiar Assemblea d'aquest nou projecte a la GAC. Com a resultat, He rebut aquest «FielNotFoundException" error. Aquesta vegada, Em portava de stsadm, no quan intentava activar la funció mitjançant el navegador web. Així, -força de fet juga dos papers. Li permet tornar a instal lar un element existent. També permet instal·lar un tret de vagonetes que no pot treballar a temps d'execució per a la supressió de l'error. Probablement diu tant en l'ajuda d'algun lloc, però mai es va adonar.
</final>
També, Vaig tenir el meu 2 hores d'hysteric nintendoSIXTYFOURRRR-en-un-dolent-manera moments quan rebatejava el Namespace en el receptor de característiques, per ajudar a rastrejar on teu ni a ningú començar.
L'arrel del problema es troba en el wsp desplegat en la base de dades del sharepoint. Vaig llegir el teu post i mentre que en efecte fixar el problema que tenim una gran solució amb diversos projectes i dotzenes d'arxius, així que tot el moviment no era una opció.
No importa quant actualitzar el seu GAC o el seu muntatge, Què et dóna problemes és l'Assemblea en el WSP actual instal·lada en sharepoint.
Vostè pot fàcilment adonat que intentant només retirar la solució (que és on l'error passa). Tot el que passa a "retràctil temps" ha de ser considerat "desplegat wsp"-no només el propi projecte.
La meva solució era:
– Administració central: Cancel·lar la solució
– stsadm: deletesolution
– Estudi Visual => Projecte => Paquet
– stsadm: addsolution-ProjectbinDebugProject.wsp d'arxiu
– stsadm: deploysolution-nom project.wsp-immediat - allowgacdeployment-força
– Estudi Visual => Desplegar
Jo també suprimíem les carpetes de reciclatge i depuració del projecte abans d'executar implementar una altra vegada, no podria tenir cap efecte però val la pena comentar.
Això funciona per a tots dos
"Tret … no es podria instal·lar perquè la càrrega de l'assemblat receptor d'esdeveniment"
i
"No ha pogut crear l'objecte receptor de tret de l'Assemblea"
Gràcies!
Francisco
Acabo de passar un parell d'hores intentant fixar aquest assumpte mateix i trobar una millor solució que simplement recrear el projecte.
Va resultar que per alguna raó que Visual Studio s'havia posat l'objectiu de complexió de x86 en comptes de x64 o MSIL – l'Assemblea va ser la GAC, no només la mateixa GAC que 64 mica SharePoint estava buscant.