I was working on a feature last week that would add some event receivers to a specific list instance. (Ја блог мало о том списку пријемник овде).
Коришћење командне линије, Могу да инсталирате функцију без грешке (али види доле за скривене грешке). When I tried to deploy the feature on the site, MOSS complained of a "FileNotFoundException" грешка. This blog entry describes how I solved it.
То је грешка која Мос ми је показао у веб претраживачу:
Feature ‘b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ could not be installed because the loading of event receiver assembly "xyzzyFeatureReceiver_0" није успело: Систем.ИО.ФилеНотФоундЕкцептион: Could not load file or assembly ‘xyzzyFeatureReceiver_0’ или један од његових зависности. Систем не може да пронађе наведену датотеку. Филе наме: ‘xyzzyFeatureReceiver_0’ at System.Reflection.Assembly.nLoad(АссемблиНаме филеНаме, Стринг цодебасе, Докази ассемблиСецурити, Скупштина лоцатионХинт, СтацкЦравлМарк& стек земљишта, Булова тхровОнФилеНотФоунд, Булова форИнтроспецтион) at System.Reflection.Assembly.InternalLoad(АссемблиНаме ассемблиРеф, Докази ассемблиСецурити, СтацкЦравлМарк& стек земљишта, Булова форИнтроспецтион) at System.Reflection.Assembly.InternalLoad(Стринг ассемблиСтринг, Докази ассемблиСецурити, СтацкЦравлМарк& стек земљишта, Булова форИнтроспецтион) at System.Reflection.Assembly.Load(Стринг ассемблиСтринг) at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject() ВРН: Скупштина обавезујућа је евидентирање искључен. Да би омогућили склапање бинд евидентирање неуспех, подесите вредност регистратора [ХКЦУ Софтваре Мицрософт Фусион!ЕнаблеЛог] (ДВОРД) на 1. Приметити: Постоје неки перформанс казна повезана са скупштине везују сече отказа. Да бисте искључили ову функцију, уклоните вредност регистратора [ХКЦУ Софтваре Мицрософт Фусион!ЕнаблеЛог].
Решавање проблема са Виндовс СхареПоинт Сервицес.
|
Знам како да намерно изазове ту грешку: don’t install the assembly in the GAC. Али, 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% удобно да ради, јер сам увек мислила да је постојао гацутил разлогом … so I tried that. It made no difference.
Претражио сам интернетс и нашао овај пост: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
Постер десило да се користи исти корен део кода (Од унутра ВСС књиге са ове листе) so that was a hopeful sign. Међутим, Предлог украшавање скупштине са [монтажа: ] 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.
Следећи, I went to the trouble of enabling the "assembly bind failure log" (након корисне и тачне упутствима) 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. Али … неће га потражите у ГАЦ.
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" за функцију б2цб42е3-4ф0а-4380-Ааба-1еф9цд526ф20: Систем.АргументНуллЕкцептион: Вредност не може бити нула. Параметар име: тип at System.Activator.CreateInstance(Тип, Булова нејавне) at System.Activator.CreateInstance(Тип) at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Решавање проблема са Виндовс СхареПоинт Сервицес.
|
Време је за последњи пут на интернетс!
Овај пут сам сазнао, предвидиво довољно, that MOSS issues this error because the assembly is not in GAC.
Ја желим да се нешто позитивно из ове и покушајте да осетите мало похвалити да сам направио Бегунац од МСИЛ склопова, but it’s not working. I’m just plain annoyed. I find myself muttering "chicken or the egg" под мој дах.
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" али не могу наћи).
Ја инсталирате функцију и активирати га и … ради! Тако, после свега што, I had to basically ‘reboot’ my project. То је још један разлог зашто мрзим рачунаре.
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. Овај пут, Ја сам заправо урадио, truly forget to copy this new project’s assembly into the GAC. Као резултат тога, I received that "FielNotFoundException" грешка. Овај пут, Добио сам је од стсадм, not when I tried to activate the feature via the web browser. Тако, -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.
</крај>