Решение за проблемот: “FileNotFoundException” Со Мојот Функција ресивер.

I was working on a feature last week that would add some event receivers to a specific list instance. (Јас Blogged малку за таа листа приемник овде).

Користење на командната линија, Можев да го инсталирате функција без грешка (но видете подолу за скриени грешка). 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" не: System.IO.FileNotFoundException: Could not load file or assembly ‘xyzzyFeatureReceiver_0’ или една од нејзините зависности. Системот не можат да најдат Наведената датотека.
Името на датотеката: ‘xyzzyFeatureReceiver_0’
at System.Reflection.Assembly.nLoad(AssemblyName Име, Стринг codebase, Докази assemblySecurity, Собранието locationHint, StackCrawlMark& магацинот почвата, Булова throwOnFileNotFound, Булова forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Докази assemblySecurity, StackCrawlMark& магацинот почвата, Булова forIntrospection)
at System.Reflection.Assembly.InternalLoad(Стринг assemblyString, Докази assemblySecurity, StackCrawlMark& магацинот почвата, Булова forIntrospection)
at System.Reflection.Assembly.Load(Стринг assemblyString)
at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Собранието обврзувачки сеча е исклучен.
Да им се овозможи собранието се врзуваат неуспех сеча, поставите на вредноста во регистарот [HKLM Software Microsoft топење!EnableLog] (DWORD) да 1.
Имајте на ум: Има некои перформанси казна поврзан со собранието се врзуваат неуспех сеча.
За да го вклучите оваа функција исклучите, отстранете ја вредноста во регистарот [HKLM Software Microsoft топење!EnableLog].

Смена на проблеми со Windows SharePoint Services.

Знам како да намерно да предизвика оваа грешка: 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% удобно прави тоа, бидејќи јас секогаш мислев дека gacutil постои причина … so I tried that. It made no difference.

Барав на Internets и го најде овој пост: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

На постерот се случи да биде со користење на ист корен малку на кодот (од внатре WSS книга од оваа листа) 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. Но … тоа нема да го бара за него во GAC.

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" за функција b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Вредност не може да биде нула.
Името на параметарот: тип
at System.Activator.CreateInstance(Тип тип, Булова се јавни)
at System.Activator.CreateInstance(Тип тип)
at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Смена на проблеми со Windows SharePoint Services.

Време за една последна посета на на Internets!

Овој пат јас да дознаете, очекувано доволно, that MOSS issues this error because the assembly is not in GAC.

Сакам да добијам нешто позитивно од ова и обидете се да се чувствувам малку горд што сум ги создал Бегалецот од MSIL собранија, 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. Поради некоја причина, 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" грешка. Овој пат, Земав од stsadm, 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.

</крајот>

Недела Смешни: Топ 10 Начини да одиме на нерви на жена

  1. Купи брокула кога знаеш таму е веќе повеќе од доволно во фрижидер.
  2. Go for a run. Cool off. Take off clean pillow case and replace with T-shirt. Cover with clean pillow case.
  3. Кога возите, праша дали ние треба да одиме на погрешен начин надолу по еднонасочна улица.
  4. За 15 години, секоја недела дека жената сугерира да оди во музеј, изразуваат изненадување што музеи се отворени на неделата.
  5. За 15 години, occasionally suggest going to the local book store on Sunday. Express surprise that they are not open on Sunday’s (Фала многу Сини закони!).
  6. Користат 20 поени да се направи 3 point turn.
  7. На кул рана есен попладне, walk into the room and turn on the A/C. Complain that it’s cold. When wife says, "then why did you turn that on, глупо" и станува за да го исклучите, grab the warm spot she had on the couch. Bonus points if she does not realize you did it until much later.
  8. Отвори конзерва вкусни бела туна и го јадат директно од конзерва, во кревет, во текот на ноќта.
  9. Одат во кујна додека жената е вечерал, отвори прибор за јадење фиока и да се поттикнат прибор околу додека сопруга писоци, "what are you looking for!"
  10. По приемот на нови деловни картички, тајно ги стават низ целата куќа: Под креветот, во навлаки за перници, внатре филџани, во нејзината чанта, во капут џебови, автомобил ракавица прегради, оставата, чајната кујна — anywhere you can think of.
  11. Напиши блог постови во врска со вашата сопруга.
  12. Се разбудам.
  13. Кога шетаат по улиците на Њу Јорк, be on the alert for "crusty" objects on the ground. Имајќи го во предвид посебен стравови вашата жена, снемам како за собереш и да побара, "Hmm, Се прашувам што е тоа?" (Be prepared for wife to body slam you as if she’s a secret service agent protecting the President from a sniper or you’ll find yourself laying on your back on the sidewalk).
  14. Drive twice around a parking lot looking for space. You know you’ve really hit pay dirt when your son in the back seat yells, "Oh no! Тој го прави тоа повторно!"
  15. Write "top 10" списоци кои немаат 10 предмети.

===

Бонус сопруга шега:

Two male co-workers go out to lunch. One of them tells the other, "I let loose an embarrassing Freudian slip the other night."

"A Freudian slip? What’s that?"

"Well, кога ќе заврши јадење, келнерката дојде и праша како ние се допадна нашата оброци. Мислев каже, ‘I loved the chicken breast’ but instead I said ‘I loved your breasts’. I was so embarrassed."

"Ah," his co-worker replied. "I had the same thing happen to me this weekend with my wife. We were eating breakfast I meant to ask her to pass the butter, но наместо тоа, јас извикав на нејзината, ‘You ruined my life!""

</крајот>

Technorati Тагови:

Настан проект 1023: “Windows не може да се бутира растеглива контра DLL MSSCNTRS”

Ажурирање (04/08/08): I seem to have solved this problem. From the command line, I ran "c:\WINDOWS system32 lodctr / Р" како за влез зборуваме за InstallShield проблеми и дека се чини дека го имаат решено за мене.

Имам забележано дека во последно време, my desktop/server fan never turns off. I know it used to turn off. I took a moment to check it out noticed that the a VMware process was running a consistent 20% utilization on one of the CPU’s. I checked the event log and saw these errors in the application log happening dozens of times per minute:

Windows не може да се бутира растеглива контра DLL UGatherer, првиот DWORD на податоци дел е грешка на Windows код.

Windows не може да се бутира растеглива контра DLL UGTHRSVC, првиот DWORD на податоци дел е грешка на Windows код.

Windows не може да се бутира растеглива контра DLL MSSCNTRS, првиот DWORD на податоци дел е грешка на Windows код.

Ако јас се вежба во деталите на една од тие пораки, Јас се добие оваа:

Извор: Perflib

Тип: Грешка

Категорија: Никој

Настан проект 1023

I did some research and there was some indication it could be a permission problem in terms of access to the DLLs in question. I played around with that stuff but could not affect things in a positive way so I gave up on that.

VMware биле мене Досаѓање за вршење ажурирање за сосема извесно време, па јас jotted надолу верзија имав инсталирано (apparently "1.0.1 build 29996") and did the update. This upgraded me to v1.04. За жал, тоа не го поправат проблемот.

I can stop the insane number of messages going to my application log if I shut down a service named "VMware Authorization Service". This prevents me from using the VMware software, па … not such a great option.

На домаќинот оперативен систем е Windows XP 64 малку.

Јас не мислам дека ова отсекогаш се случи, но јас не се сеќавам некој посебен настан што би можело да доведе до тоа.

Ова е причината зошто јас мразам компјутери.

</крајот>

Technorati Тагови:

Брзи & Лесно: Преименувате поставен фајл со употреба на Sharepoint Object Model Преку Настан ресивер

Ажурирање: This works but there are significant limitations which are described in the comments. This may still be useful in some cirumstances.

Ажурирање 2: Во мојот тековниот проект, users always upload documents. Како резултат на, I don’t run into a problem where MS Word is running and thinks that the file was renamed on it. I did run into a problem, "the file was modified by someone else" and solved this via a simple semaphore type flag. Users need to change a meta data field from its default value to something else. The itemupdated() приемник изгледа за е валидна вредност таму пред всушност извршување на преименување и оттогаш, I have not had any problems. Your mileage may vary.

I have a client requirement to change the name of files uploaded to a specific document library to conform with a particular naming convention. The API does not provide a "rename()" метод. Наместо, ние ги користиме "MoveTo(…)". Here is a minimal bit of code to accomplish this:

 јавноста избегне поништат ItemAdded(SPItemEventProperties својства)
        {
            Spfile ѓ = properties.ListItem.File;

            f.MoveTo(properties.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

The only tricky bit is the "properties.ListItem.ParentList.RootFolder.Url". The MoveTo() method requires a URL. That mashed up string points me to the root folder of my current document library. This allows me to avoid any hard coding in my event receiver.

Ова е многу повеќе корисни верзија која го прави истото, but assigns the name of the file to "Title":

 јавноста избегне поништат ItemAdded(SPItemEventProperties својства)
        {
            DisableEventFiring();

            // Му ја додели титулата на оваа точка до името на датотеката се.
 // ЗАБЕЛЕШКА: Оваа задача мора да се случи пред ние менувате самата датотека.
 // Повикувајќи ажурирање() на spfile чини да се поништи имот во
 // извесна смисла.  Updates to "Title" не успеа до таа промена (и ажурирање() јавете се)
 // беа преместени во предниот дел на промена на името на датотеката.
            properties.ListItem["Title"] = Properties.ListItem.File.Name;

            properties.ListItem.Update();

            Spfile ѓ = properties.ListItem.File;

            // Добие продолжување на датотеката.  Ние треба дека подоцна.
 низа spfileExt = нови FileInfo(f.Name).Продолжување;

            // Преименувајте ја датотеката за да проект на елемент во листата и користи ја наставката да се задржи
 // дека дел од неа непроменети.
            f.MoveTo(properties.ListItem.ParentList.RootFolder.Url +
                "/" + properties.ListItem["ID"] + spfileExt);

            // Извршат во движење.
            f.Update();

            EnableEventFiring();
        }

Форум за дискусија: Спроведување на најдобри практики усогласеност во не-тривијални Мос животна средина

А колеги, "Mark", has started up a potentially interesting newsgroup discussion focusing on "establishing excellent SharePoint Governance from the start" за 35,000 корисник на животната средина.

Дискусијата е тука: http://groups.google.com/group/microsoft.public.sharepoint.portalserver/browse_thread/thread/6d9a738d981af772/1c390b15c5407db6?#1c390b15c5407db6

Поп на повеќе и да придонесе!

</крајот>

Прилагодено акција рачно не ќе се прикаже за Нова Тема

I’m still in the habit of crafting my feature XML files by hand since it’s all quite new to me. I don’t want to rely on a front-end tool that does stuff I don’t understand (тој рече дека како што тој напишал блог запис со користење на алатката што тој не разбира).

Денес, I was trying to add a custom action to the site settings but it just wouldn’t show up. I could install the feature and see it in the site features, но кога ќе го активира (без грешка) тоа едноставно не ќе се појави на опаѓачкото мени.

I finally realized that I misspelled "SharePoint" во Локација атрибут на <CustomAction> јазол. This is the bad elements.xml file:

<?XML верзија="1.0" кодирање="UTF-8" ?>
<Елементи xmlns="HTTP://schemas.microsoft.com / SharePoint /">
  <CustomAction
 Id="SiteActionsToolbar"
 GroupId="SiteActions"
 Локација="Microsoft.Sharepoint.StandardMenu"
 Секвенца="100"
 Наслов="Здраво!"
 Опис="Сопствени мени акција додаде преку функција."
 ImageUrl="_layouts / слики / menuprofile.gif">

    <UrlAction Url="HTTP://www.xyzzy.com"/>

  </CustomAction>
</Елементи>

Добра:

<?XML верзија="1.0" кодирање="UTF-8" ?>
<Елементи xmlns="HTTP://schemas.microsoft.com / SharePoint /">
  <CustomAction
 Id="SiteActionsToolBar"
 GroupId="SiteActions"
 Локација="Microsoft.SharePoint.StandardMenu"
 Секвенца="100"
 Наслов="Здраво!"
 Опис="Сопствени мени акција додаде преку функција."
    >
    <UrlAction Url="HTTP://www.xyzzy.com"/>
  </CustomAction>
</Елементи>

That one took me a good two hours to figure out 🙂

И јас земам утеха во фактот дека некој ден во иднина, Ќе бидете во можност да се каже со убедување, "back in the day, Морав да одиме три милји до ридот во снегот (бос!) in order to deploy a custom feature to MOSS. You kids, не знаеш колку е лесно да го имаат! Get off my lawn!"

Не можам да дочекам.

</крајот>

Technorati Тагови: ,

Блог статистика

I thought some people might be interested in my blog’s statistics. You can use mine as a benchmark to compare your own.

I’m running my blog on windows live spaces. They collect stats for me and I don’t know any way to control that. It’s good as far as it goes, but it’s fairly limited in that I can’t do much actual analysis with it. I’d love, на пример, to be able to generate a listing of my most frequently hit posts but I can’t do that without a prohibitive manual process. If someone knows better, молам да ми кажете.

Live Spaces статус кажи ми: вкупно хитови за ден, total hits for the week and total hits since day zero. It also tells me what people did to get to my blog (e.g. Google, MSDN форум линк, итн).

На некој начин, a "hit" Очигледно е. Ако ја читаш оваа реченица сега, сте речиси сигурно регистрираат како еден хит.

RSS is a little confusing. On one hand, I see individual RSS hits all day long. Но, I also see RSS "sweeps". A sweep is when I see 20 или 30 RSS hits all within a one or two second window. I assume these are automated things like google checking in on my site, можеби другите луѓе прелистувачи … не се сигурни. They are definitely some kind of automated process. I cannot tell, сепак, how many of my total hits are automated and how many have an actual human on the other side. I would guess at least 100 хитови на ден се автоматизирани.

За да на броеви!

Напишав мојот прв блог запис на 27 јули, 2007.

Имам напишано околу 60 блог записи, бидејќи тогаш, повеќе од 50 од кои директно се однесуваат на SharePoint.

Почнав да ги пратите на на моите хитови во табела на дневна основа до крајот на септември.

Месечен Почеток:

Првата недела од: Вкупно Посети
Октомври 1,234
Ноември 2,162
Декември 3,071
Јануари 2008 4,253

Вкупно по месец

Месец Вкупно Посети
Октомври 6,620
Ноември 11,110
Декември 13,138

High Water марки

Тип Вкупно Посети
Најдобриот ден 958
Најдобра недела 4,253
Вкупно Посети Од Ден Нула 42,438

Јас сум заинтересиран во други’ stats. If you care to share yours in the comments, Ве молиме да!

</крајот>

Недела утро Смешни: “Да, Да, Да. Бла, бла, бла.”

За шест години, моите четири-годишен син и јас бевме горе гледа Дискавери канал "shark attacks" специјални (можеби ова). He was very young at the point and I was always worried what he might see on a show like this and how he might take it. I didn’t want him to develop, на пример, било специјални стравувањата на вода или издавам тајна нешто несоодветно со неговите пријатели и евентуално да предизвика неговата бебе пријател мрежа да дојде паѓа надолу.

Discovery handles these kinds of subjects very well. It’s not about creating a страв од нешто, but rather to show how unusual it is for sharks to attack humans.

Така, we’re watching it and there is this one particularly scary attack involving a small girl. As Discovery is building the drama of the attack, мојот звук (кој секогаш бил исклучително напнат и онака), is getting very excited. I make some noises about how unusual it is for sharks to attack people, and how bad the poor girl must feel. I’m trying to explain that people recover from these events and become stronger for it. Сепак, I had misinterpreted his excitement. He was not worried about the girl at all. Наместо, додека плескање со рацете, тој ми кажува, "The sharks love it! It’s terrific. It’s wonderful. Its a DREAM COME TRUE!"

Мислев дека ова беше смешен, but also very disturbing. Од една страна, Ми беше мило — дури и малку горд — дека би можеле да имаат силна емпатичен чувства, cross-species though they may be. As humans, we need to develop our "empathic muscles" така зборуваат или ќе заврши како овој човек 🙂 On the other hand, he was feeling cross-species empathy toward a species who was exhibiting behavior inimical to his own. I was really struggling with this when the narrator used the word "paradigm". My son picked up on that and asked me what that meant.

Тоа не е толку лесен збор да се опише на четири години, but I gave it a try. When I think of the word "paradigm", Томас Кун is never far from my thoughts. I read Структура на научна револуција назад во Лафајет и за подобро или за полошо, the word "paradigm" is pregnant with extra meaning for me. (Sort of like the word "contact" по сослушувањето на филм Телефон глас да ми кажете каде можам да видам тој филм [Мислев дека книгата е подобро]; Јас секогаш велам, "CONTACT!" whenever I see or hear someone say "contact").

Како и да е, Се обидувам да се објасни му на Kuhnian дефиниција, that it’s "a historical movement of thought" and that it’s a "way of thinking with a number of built-in assumptions that are hard to escape for people living at that time." Се разбира, не можете да зборувате како на четири-годишен, so I’m trying to successively define it to smaller pieces and feeling rather proud of myself as I do so. (Јас само знаеше дека некој надвор од колеџ би се грижеле што сум ја прочитал Кун!).

I’m just warming to the task when he interrupts me. Waving his hand во мојата општа насока и никогаш не земајќи ги неговите очи излета уште еден брутален ајкула напад, тој само вели, "Yeah, Да, Да. Бла, бла, blah.".

So much for that 🙂

Во тој момент, Решив да бега, реторички зборува, седат назад, и уживајте во гледањето ајкули напад луѓето со мојот син.

</крајот>

Technorati Тагови:

Се префрлат Види Види Врз основа User ID во Еден InfoPath формулар

Ние имавме развиено InfoPath формулар со повеќе пати да ја поддржи новиот вработен / on-boarding process. When the company hires a new person, Секторот за ИТ и други групи треба да преземат акција (постави платен список, овозможи пристап до соодветни апликации, лоцирање на маса, итн). We use on form but a different view of the form for each of those functions.

Во оваа фирма, повеќето од луѓето вклучени во бизнисот процес се ИТ-чувство, па кога тие пристапите на форма, their default view is a "menu" view with buttons that direct them to their specific function. Сепак, we needed to simplify things for the new hire’s direct manager. This person should not see any of the IT related stuff. Всушност, таа треба да се види само еден поглед на формата, а не дури и да има опција да се види другата пати.

Во нашиот случај, таа сметка директен менаџер е директно поврзана со форма учтивост на контактирајте селектор (which I am always wanting to call a "people picker" поради некоја причина).

Чекорите се како што следува:

1. Во дизајнот на владата, одете на Tools -> Форма Опции -> Отворете и Save.

2. Select "rules".

3. Create a new rule whose action is "switch to view" и чија состојба Нотингем корисничкото име() функција.

корисничко име() returns the "simple" user name without the domain. If I log into SharePoint with credentials "domain\pagalvin", корисничко име() returns "pagalvin".

The contact selector provides three bits of information for a contact. The "AccountID" portion is most useful for this scenario. The only thing that makes this even a little bit of challenge is that the contact selector (во мојата средина во секој случај) враќа на доменот и кориснички ID, as in "domain\pagalvin". This prevents us from doing a straight-forward equality condition since AccountID ("domain\pagalvin") никогаш не ќе се изедначи корисничко име() ("pagalvin").

We can get around this using the "contains" оператор: AccountID содржи корисничко име().

Ние може да потрае понатаму и пред-Pend хард-кодирани домен во предниот дел на корисничко име() функција да добие нашата еднаквост провери и да ги елиминираат ризикот од лажно позитивни на содржи операторот.

We would have REALLY like to automatically switch view for other users based on their AD security group membership. На пример, when a member of the "IT Analytics" група пристапи форма, automatically switch to the IT Analytics view. We didn’t have time to implement it, but my first thought is to create a web service that would have a method like "IsMemberOfActiveDirectorySecurityGroup", Поминете го корисничкото име() and return back true or false. Does anyone have any other, повеќе умна идеја? Is there any SharePoint function we can leverage from InfoPath to make that determination?

</крајот>

Technorati Тагови:

Случајно Додавање законик до InfoPath формулар; Намерно Тоа Отстранување

Кога работите со копчињата на образец, we often add rules. You access the rules editor from the properties of the button.

Кога кликнување околу брзо, it’s easy to accidentally click on "Edit Form Code" instead of "Rules …".

Прв пат Го направив ова, I canceled out of the code editor. Сепак, when I tried to publish the form a little while later, it required that I publish as an "Administrator-approved form template (advanced)". I didn’t actually do any programming and I absolutely didn’t want to go through an unnecessary approval process. I was in a bit of panic at the time due to time constraints. To get past it, I simply restored a previous backup and continued. I had recently seen some blog posts about people going into the form’s XML to tweak things and I was afraid I would have to do something similar.

Денес, I did it again. Овој пат, I had a little more time on my hands and found that you can easily undo this.

Оди до:

Tools -> Форма Опции -> Програмирање: "Remove Code"

It does not get much easier than that.

</крајот>

Technorati Тагови: ,