אויב די געצייַג איז טאן שטאָפּן איר טאָן נישט פֿאַרשטיין און דעמאָלט עס פיילז אין שריט N פון אַן אומבאַקאַנט נומער פון טריט, איר ניטאָ טויט אין די וואַסער…
</עק>
אויב די געצייַג איז טאן שטאָפּן איר טאָן נישט פֿאַרשטיין און דעמאָלט עס פיילז אין שריט N פון אַן אומבאַקאַנט נומער פון טריט, איר ניטאָ טויט אין די וואַסער…
</עק>
איך איז געווען אַמאָל ווידער קראַפטינג בדק ADF טעקעס דורך האַנט (אַזוי אַז איך קענען בויען אַרויף מיין "באַקומען אַוועק מיין לאָנקע!" איך) און שלאָגן דעם שיינע טעות:
"Application definition import failed. די פאלגענדע טעות פארגעקומען:"
ווי איר קענען זען, דאָרט ס 'אַ טעות, אָבער … עס ס 'נישט געגאנגען צו זאָגן מיר וואָס עס איז.
אין מיין פאַל, the issue turned out that I had started off with a functional ADF for a different project that connected to a database and executed a SQL query against a view. In this new project, I am calling a method on a web service. I had stripped out the DB specific stuff and added my web service stuff, אָבער ניט אַנדערש צו דערהייַנטיקן די <לאָבסיסטעם>’s Type attribute. I switched it to "WebService" און איך גליק אריבערגעפארן אויף צו נייַער און מער יקסייטינג אַרייַנפיר ערראָרס, וואָס האבן כאַנדאַלד אין רעכט קורס.
דאָ איז די אומרעכט לאָבסיסטעם:
<לאָבסיסטעם
קסמלנס:קססי =הטטפּ://www.w3.org/2001/XMLSchema-instance
קססי:סטשעמאַלאָקאַטיאָן =הטטפּ://schemas.microsoft.com/office/2006/03/BusinessDataCatalogבדקמעטאַדאַטאַ.קססד
Type="Database"
Version="1.0.0.0" Name="xyzzy"
xmlns="הטטפּ://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">
דאס איז ריכטיק:
<לאָבסיסטעם
קסמלנס:קססי =הטטפּ://www.w3.org/2001/XMLSchema-instance
קססי:סטשעמאַלאָקאַטיאָן =הטטפּ://schemas.microsoft.com/office/2006/03/BusinessDataCatalogבדקמעטאַדאַטאַ.קססד
Type="WebService"
Version="1.0.0.0" Name="xyzzy"
xmlns="הטטפּ://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">
</עק>
דערהייַנטיקן: דאס מסדן פּאָסטינג האט עטלעכע טשיקאַווע אַבזערוויישאַנז פון דזשקסדזש באזירט אויף זייַן, דער הויפּט נעגאַטיוו, יקספּיריאַנסיז געגאנגען אַראָפּ דעם דרך: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2623565&SiteID=1
We have a business scenario where we need to link two documents libraries via a common "document ID" פעלד.
We often use a lookup column to implements links like this. There are several drawbacks to lookup columns, דרייַ פון וואָס זענען:
באַקט דורך בדק, we can use a "business data" column type and it provides a superior search and even allows multiple columns of data to appear in list views.
איך ווע האט עטלעכע פּרילימאַנערי הצלחה מיט דעם צוגאַנג און פּלאַן צו שרייַבן מער וועגן אים.
אויב איר ווע געארבעט דעם ווינקל פאר און האָבן קיין באַמערקונגען, ביטע שער!
</עק>
איך ווע שוין ארבעטן מיט בדק הייַנט, coding ADF files by hand and generating myself some errors. One such error:
אַפּפּליקאַטיאָן דעפֿיניציע אַרייַנפיר ניט אַנדערש. די פאלגענדע טעות פארגעקומען: קען נישט מאַסע טיפּ דיסקרייבד דורך טיפּעדעסקריפּטאָר ס טיפּענאַמע. פּאַראַמעטער נאָמען: טיפּענאַמע פֿעלער איז געפּלאָנטערט אין אָדער נאָר איידער ליניע: '35’ און שטעלע: ’20’.
מאָך געוויזן דעם טעות ווען איך געפרוווט צו אַרייַנפיר די ADF קסמל טעקע.
איך ריסערטשט די ינטערנעץ און געפונען אַז איך איז געווען רעפראַנסינג די לאַב בייַשפּיל נאָמען (פון די <לאָבסיסטעמינסטאַנסע>) אין מיין <טיפּעדעסקריפּטאָר> נאָדע ווען איך זאָל האָבן רעפראַנסט די לאַב נאָמען זיך (פון <לאָבסיסטעם>).
פאַלש:
<TypeDescriptor TypeName="Conchango.KeyValue, לאַב ינסטאַנסע נאָמען" Name="KeyValue">
ריכטיק:
<TypeDescriptor TypeName="Conchango.KeyValue, לאַב נאָמען" Name="KeyValue">
האָפֿן דאָס איינער סאַוועס עמעצער אַ שעה אָדער צוויי פון צייַט.
</עק>
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.
This is the error that MOSS showed me in the web browser:
Feature ‘b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ could not be installed because the loading of event receiver assembly "xyzzyFeatureReceiver_0" failed: סיסטעמ.יאָ.פילענאָטפאָונדעקססעפּטיאָן: Could not load file or assembly ‘xyzzyFeatureReceiver_0’ or one of its dependencies. The system cannot find the file specified.
File name: ‘xyzzyFeatureReceiver_0’
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) צו 1.
טאָן: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
I know how to deliberately cause that error: 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% comfortable doing that because I always thought that gacutil existed for a reason … so I tried that. It made no difference.
I searched the Internets and found this post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
The poster happened to be using the same root bit of code (from the Inside WSS book from this list) so that was a hopeful sign. אָבער, the suggestion of decorating the assembly with an [assembly: ] 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" (following the helpful and accurate instructions provided) 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. אָבער … it won’t search for it in the 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" for feature b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: ווערט קענען ניט זיין נאַל.
פּאַראַמעטער נאָמען: טיפּ
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Time for one last trip to the Internets!
This time I find out, predictably enough, that MOSS issues this error because the assembly is not in GAC.
I want to get something positive out of this and try to feel a little proud that I’ve created the Fugitive of MSIL assemblies, but it’s not working. I’m just plain annoyed. I find myself muttering "chicken or the egg" under my breath.
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" but can’t find one).
I install the feature and activate it and … it works! אַזוי, after all that, I had to basically ‘reboot’ my project. This is another reason why I hate computers.
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. דאס מאָל, I did actually, truly forget to copy this new project’s assembly into the GAC. ווי אַ רעזולטאַט, I received that "FielNotFoundException" גרייַז. דאס מאָל, I got it from 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.
</עק>
===
באָנוס פרוי וויץ:
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!'"
</עק>
דערהייַנטיקן (04/08/08): I seem to have solved this problem. From the command line, I ran "c:\Windows סיסטעמ32 לאָדקטר / ר" ווי פּער אַ פּאָזיציע גערעדט וועגן ינסטאַללשיעלד פּראָבלעמס און אַז אויס צו האָבן סאַלווד עס פֿאַר מיר.
איך האב באמערקט אַז לעצטנס, 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:
פֿענצטער קענען נישט מאַסע עקסטענסיבלע טאָמבאַנק דלל וגאַטהערער, דער ערשטער דוואָרד אין דאַטן אָפּטיילונג איז די פֿענצטער טעות קאָד.
פֿענצטער קענען נישט מאַסע עקסטענסיבלע טאָמבאַנק דלל וגטהרסווק, דער ערשטער דוואָרד אין דאַטן אָפּטיילונג איז די פֿענצטער טעות קאָד.
פֿענצטער קענען נישט מאַסע עקסטענסיבלע טאָמבאַנק דלל מססקנטרס, דער ערשטער דוואָרד אין דאַטן אָפּטיילונג איז די פֿענצטער טעות קאָד.
אויב איך בויער אין די פרטים פון איינער פון די אַרטיקלען, איך באַקומען דעם:
מאָקער: פּערפליב
טיפּ: גרייַז
קאַטעגאָריע: גאָרניט
געשעעניש שייַן 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.
וומוואַרע האט שוין נאַגינג מיר וועגן פּערפאָרמינג אַ דערהייַנטיקן פֿאַר גאַנץ עטלעכע מאָל, אַזוי איך דזשאַטיד אַראָפּ די ווערסיע איך האט אינסטאַלירן (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.
דער באַלעבאָס אַפּערייטינג סיסטעם איז פֿענצטער קספּ 64 ביסל.
איך טאָן ניט טראַכטן דאָס האט שטענדיק געטראפן, אָבער איך טאָן ניט צוריקרופן קיין באַזונדער געשעעניש וואָס זאל האָבן געפירט צו אים.
דאס איז וואָס איך האַס קאָמפּיוטערס.
</עק>
דערהייַנטיקן: 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:
עפנטלעך אָווועררייד פּאָסל יטעמאַדדעד(ספּיטעמעווענטפּראָפּערטיעס פּראָפּערטיעס) { ספּפילע F = פּראָפּערטיעס.ליסטיטעמ.פילע; פ.מאָוועטאָ(פּראָפּערטיעס.ליסטיטעמ.פּאַרענטליסט.ראָאָטפאָלדער.ורל + "/xyzzy.doc"); פ.ופּדאַטע(); } |
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":
עפנטלעך אָווועררייד פּאָסל יטעמאַדדעד(ספּיטעמעווענטפּראָפּערטיעס פּראָפּערטיעס) { דיסאַבלעעווענטפירינג(); // באַשטימען די טיטל פון דעם נומער צו דעם נאָמען פון טעקע זיך. // נאָטיץ: דאס אַסיינמאַנט מוזן נעמען אָרט איידער מיר מאָדיפיצירן דער טעקע זיך. // פאַך דערהייַנטיקן() אויף די ספּפילע מיינט צו ינוואַלידייט די פּראָפּערטיעס אין // עטלעכע זינען. Updates to "Title" ניט אַנדערש ביז אַז ענדערונג (און דערהייַנטיקן() רופן) // זענען אריבערגעפארן אין פראָנט פון די טוישן צו דער טעקע נאָמען. פּראָפּערטיעס.ליסטיטעם["Title"] = Properties.ListItem.File.Name; פּראָפּערטיעס.ליסטיטעמ.ופּדאַטע(); ספּפילע F = פּראָפּערטיעס.ליסטיטעמ.פילע; // באַקומען די פאַרלענגערונג פון דער טעקע. מיר דאַרפֿן אַז שפּעטער. שטריקל ספּפילעעקסט = נייַ טעקע אינפֿאָרמאַציע(f.Name).געשפּרייט; // רענאַמע דער טעקע צו די רשימה נומער ס שייַן און נוצן די טעקע געשפּרייט צו האַלטן // אַז טייל פון עס בעשאָלעם. פ.מאָוועטאָ(פּראָפּערטיעס.ליסטיטעמ.פּאַרענטליסט.ראָאָטפאָלדער.ורל + "/" + פּראָפּערטיעס.ליסטיטעם["ID"] + ספּפילעעקסט); // טוען די רירן. פ.ופּדאַטע(); ענאַבלעעווענטפירינג(); } |
א יונגערמאַן, "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" אין דער אָרט אַטריביוט פון דער <קוסטאָמאַקטיאָן> נאָדע. This is the bad elements.xml file:
<?קסמל ווערסיע="1.0" סיסטעם="UTF-8" ?> <עלעמענטן קסמלנס="הטטפּ://schemas.microsoft.com / שאַרעפּאָינט /"> <קוסטאָמאַקטיאָן שייַן="סיטעאַקטיאָנסטאָאָלבאַר" גראָופּיד="סיטעאַקטיאָנס" אָרט="מיקראָסאָפט.שאַרעפּאָינט.סטאַנדאַרדמענו" סיקוואַנס="100" טיטל="העלא!" באַשרייַבונג="מנהג מעניו קאַמף צוגעגעבן דורך אַ שטריך." ימאַגעורל="_לייַאָוץ / בילדער / מענופּראָפילע.גיף"> <ורלאַקטיאָן URL="הטטפּ://www.xyzzy.com"/> </קוסטאָמאַקטיאָן> </עלעמענטן> |
גוט:
<?קסמל ווערסיע="1.0" סיסטעם="UTF-8" ?> <עלעמענטן קסמלנס="הטטפּ://schemas.microsoft.com / שאַרעפּאָינט /"> <קוסטאָמאַקטיאָן שייַן="סיטעאַקטיאָנסטאָאָלבאַר" גראָופּיד="סיטעאַקטיאָנס" אָרט="מיקראָסאָפט.שאַרעפּאָינט.סטאַנדאַרדמענו" סיקוואַנס="100" טיטל="העלא!" באַשרייַבונג="מנהג מעניו קאַמף צוגעגעבן דורך אַ שטריך." > <ורלאַקטיאָן URL="הטטפּ://www.xyzzy.com"/> </קוסטאָמאַקטיאָן> </עלעמענטן> |
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!"
קענען נישט וואַרטן.
</עק>