I was working on a feature last week that would add some event receivers to a specific list instance. (Pixka bat Blogetakoak I hartzailea zerrenda hori hemen).
Komando-lerroa erabiliz, Ezaugarri instalatu izan dut error gabe (baina ikusi beherago ezkutuko akats). When I tried to deploy the feature on the site, MOSS complained of a "FileNotFoundException" error. This blog entry describes how I solved it.
Hau errorea MOSS erakutsi zidan web nabigatzailea da:
Feature ‘b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ could not be installed because the loading of event receiver assembly "xyzzyFeatureReceiver_0" huts egin du: System.IO.FileNotFoundException: Could not load file or assembly ‘xyzzyFeatureReceiver_0’ edo bere mendekotasunen bat. Sistema ezin du fitxategia aurkitu zehaztutako. File name: ‘xyzzyFeatureReceiver_0’ at System.Reflection.Assembly.nLoad(AssemblyName fitxategi-izena, Katea iturburua, Evidence assemblySecurity, Batzar locationHint, StackCrawlMark& stackMark, Boolearrak throwOnFileNotFound, Boolearrak forIntrospection) at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolearrak forIntrospection) at System.Reflection.Assembly.InternalLoad(Katea assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolearrak forIntrospection) at System.Reflection.Assembly.Load(Katea assemblyString) at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject() WRN: Batzar loteslea dena itzalita dago. Muntaia bind porrota egunkarian gaitzeko, ezarri erregistro-balioa [HKLM Software Microsoft Fusión!EnableLog] (DWORD) to 1. Kontuan izan: Badira muntaia bind porrota egunkarian lotutako errendimendu penalti batzuk. Eginbide hori desaktibatzeko, kendu erregistroko balioa [HKLM Software Microsoft Fusión!EnableLog].
Konpondu Windows SharePoint Services gaiak.
|
Nola nahita eragin error jakin dut: don’t install the assembly in the GAC. Baina, it was in the GAC. I normally install assemblies into the GAC by dragging them into the c:\windows\assembly folder using windows explorer. I’ve never felt 100% erosoa eta beti pentsatu izan dut delako gacutil duten arrazoi bat existitu egiten dela … so I tried that. It made no difference.
Internets bilatu nintzen eta post hau topatu: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
Egilearen gertatu daiteke erabili kodea erro bera bit (du zerrenda honetan Inside WSS-liburu) so that was a hopeful sign. Hala eta guztiz ere, Batzar apaintzen duen gomendioa batekin [muntaia: ] directive didn’t make sense to me. I tried it anyway and I was right. It made no difference.
Then I noticed that my class definition was not public. I made it public and that made no difference.
Hurrengoa, I went to the trouble of enabling the "assembly bind failure log" (betiere, lagungarria eta zehatza jarraibideak) and this is where things started to get interesting. That log shows me that the runtime is searching everywhere on that server for my assembly. It even appears to be searching for it in my medicine cabinet. Baina … ezin izango da bilatzeko GAC en.
I put on my winter jacket and go searching the Internets again and find that someone has had this problem too. The lengthy discussion in that posting peters off into nothing and I can’t find a solution.
I move my assembly into one of the places the log claims it’s searching and I make a little more progress. I’m rewarded with a new error in the browser when I try to activate the feature:
Failed to create feature receiver object from assembly "xyzzyFeatureReceiver_0", type "Conchango.xyzzyFeatureReceiver" Ezaugarri for b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Balioa ezin da hutsik egon. Parametro izena: mota at System.Activator.CreateInstance(Mota mota, Boolearrak nonPublic) at System.Activator.CreateInstance(Mota mota) at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Konpondu Windows SharePoint Services gaiak.
|
Bata Internets azken bidaia egiteko denbora!
Denbora honetan jakin dut, aurrez nahikoa, that MOSS issues this error because the assembly is not in GAC.
Zerbait honen out positiboa lortzeko eta saiatu apur bat harro ditudan sortu sentitu nahi dut MSIL muntaietan Iheslarien, but it’s not working. I’m just plain annoyed. I find myself muttering "chicken or the egg" nire arnasa pean.
I finally decide to punt. I create an entirely new project and copy/paste the code from the incredible-cloaked-from-the-GAC-assembly non-working project over to this new project. (I look for a build flag called something like "hide from assembly binding if installed in the GAC" baina ezin da aurkitu).
Eginbidea instalatu eta gaitu eta … Funtzionamendua! Beraz,, hori guztia egin ondoren, I had to basically ‘reboot’ my project. Honetan beste arrazoi bat zergatik ordenagailuak gorroto dut.
I did learn something useful from this. I had been installing features using the stsadm command line all day long and been using the "-force" option out of habit. For some reason, I did not use the -force option when I installed the new project. Oraingo honetan, Egia esan, ez nuen, truly forget to copy this new project’s assembly into the GAC. Baten ondorioz, I received that "FielNotFoundException" error. Oraingo honetan, Lortu dut stsadm tik, not when I tried to activate the feature via the web browser. Beraz,, -force actually plays two roles. It allows you to re-install an existing feature. It also allows you to install a buggy feature that cannot work at runtime by suppressing the error. It probably says as much in the help somewhere but I never noticed it.
</amaiera>