Δούλευα σε ένα χαρακτηριστικό την περασμένη εβδομάδα που ήθελα να προσθέσω κάποια εκδήλωση δέκτες σε μια συγκεκριμένη λίστα παρουσία. (Εγώ blogged λίγο σχετικά με το δέκτη λίστα εδώ).
Χρησιμοποιώντας τη γραμμή εντολών, Θα μπορούσα να εγκαταστήσετε τη δυνατότητα χωρίς σφάλμα (αλλά δείτε παρακάτω για το κρυφό σφάλμα). Όταν προσπάθησα να αναπτύξετε το χαρακτηριστικό γνώρισμα τῆς Ἱστοσελίδος, ΒΡΎΑ καταγγέλλει μια "FileNotFoundException" σφάλμα. Αυτό το ιστολόγιο εισόδου περιγράφει πώς θα το λύσει.
Αυτό είναι το λάθος που ΒΡΎΑ μου έδειξε στο πρόγραμμα περιήγησης:
Το χαρακτηριστικό ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ δεν θα μπορούσε να εγκατασταθεί επειδή η φόρτωση του συγκρότηση δέκτη συμβάντος "xyzzyFeatureReceiver_0" απέτυχε: System.IO.FileNotFoundException: Δεν μπόρεσε να φορτωθεί αρχείου ή της συγκρότησης ' xyzzyFeatureReceiver_0’ ή μία από τις εξαρτήσεις. Το σύστημα δεν μπορεί να βρει το καθορισμένο αρχείο.
Όνομα αρχείου: «xyzzyFeatureReceiver_0’
στο System.Reflection.Assembly.nLoad(Όνομα αρχείου AssemblyName, Συμβολοσειρά codeBase, Στοιχεία assemblySecurity, Συνέλευση locationHint, StackCrawlMark& stackMark, Δυαδική throwOnFileNotFound, Δυαδική forIntrospection)
στο System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Στοιχεία assemblySecurity, StackCrawlMark& stackMark, Δυαδική forIntrospection)
στο System.Reflection.Assembly.InternalLoad(Συμβολοσειρά assemblyString, Στοιχεία assemblySecurity, StackCrawlMark& stackMark, Δυαδική forIntrospection)
στο System.Reflection.Assembly.Load(Συμβολοσειρά assemblyString)
στο Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Είναι ενεργοποιημένη η Συνέλευση καταγραφή δεσμευτική OFF.
Να ενεργοποιήσετε την καταγραφή αποτυχία δεσμεύουν Συνέλευση, Ορίστε την τιμή μητρώου [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) να 1.
Σημείωση: Υπάρχει κάποια ποινή επιδόσεων που σχετίζονται με Συνέλευσης δεσμεύουν αποτυχία καταγραφή.
Για να απενεργοποιήσετε αυτό το χαρακτηριστικό γνώρισμα, καταργεί την τιμή μητρώου [HKLMSoftwareMicrosoftFusion!EnableLog].
Ξέρω πώς να προκαλέσει σκόπιμα το σφάλμα: Μην εγκαταστήστε τη συναρμολόγηση στο GAC. Αλλά, ήταν στο GAC. Εγώ κανονικά εγκαταστήσει συγκροτήσεις στο GAC από έσυρα αυτούς into το c:\windowsassembly φάκελο χρησιμοποιώντας τον εξερευνητή παραθύρων. Ποτέ δεν έχω αισθητή 100% άνετα να κάνουν αυτό, διότι πάντα πίστευα ότι gacutil υπήρχε για έναν λόγο … έτσι δοκίμασα που. Δεν είχε καμία διαφορά.
Έψαξα το Ίντερνετ και βρήκα αυτό το post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
Η αφίσα συνέβη να χρησιμοποιεί το ίδιο bit ρίζα του κώδικα (από το βιβλίο μέσα WSS από αυτόν τον κατάλογο) έτσι ώστε ήταν ένα ελπιδοφόρο σημάδι. Ωστόσο, η πρόταση της διακόσμησης του συγκροτήματος με μια [Συνέλευση: ] οδηγίας δεν έχει νόημα για μένα. Δοκίμασα κι αλλιώς και είχα δίκιο. Δεν είχε καμία διαφορά.
Στη συνέχεια παρατήρησα ότι μου ορισμό κλάσης δεν ήταν δημόσια. Μου έκανε πολύ κοινό και που δεν έκανε καμία διαφορά.
Επόμενη, Πήγα στο πρόβλημα της διευκόλυνσης της "Συνέλευσης δεσμεύουν αποτυχία καταγραφής" (ακολουθώντας τις χρήσιμες και ακριβείς οδηγίες που παρέχονται) και αυτό είναι όπου τα πράγματα άρχισαν να παίρνουν ενδιαφέροντα. Ότι log μου δείχνει ότι ο χρόνος εκτέλεσης είναι η αναζήτηση παντού σε αυτόν το διακομιστή μου ΕΓΚΑΤΑΣΤΑΣΗΣ. Φαίνεται ακόμη και για να ψάχνουν για αυτό σε μου γραφείο ιατρικής. Αλλά … αυτό δεν θα το αναζητήσετε στο GAC.
Έβαλα μου σακάκι χειμώνα και ψάξω και πάλι το Ίντερνετ και βρείτε ότι κάποιος είχε αυτό το πρόβλημα πολύ. Η μακρά συζήτηση στην απόσπαση εξασθενεί με την απομάκρυνση μακριά σε τίποτα και δεν μπορώ να βρω μια λύση.
Μπορώ να μεταφέρω Συνέλευση μου σε ένα από τα μέρη που το αρχείο καταγραφής ισχυρίζεται είναι η αναζήτηση και να κάνω λίγο μεγαλύτερη πρόοδο. Είμαι ανταμείβεται με ένα νέο σφάλμα στο πρόγραμμα περιήγησης, όταν προσπαθώ να ενεργοποιήσετε τη λειτουργία:
Απέτυχε η δημιουργία αντικειμένου δέκτη χαρακτηριστικό από Συνέλευση "xyzzyFeatureReceiver_0", Πληκτρολογήστε "Conchango.xyzzyFeatureReceiver" για το χαρακτηριστικό b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Αξία δεν μπορεί να είναι null.
Το όνομα παραμέτρου: Τύπος
στο System.Activator.CreateInstance(Τύπο, Δυαδική μη δημοσιεύσιμες)
στο System.Activator.CreateInstance(Τύπο)
στο Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Χρόνος για ένα τελευταίο ταξίδι στο Ίντερνετ!
Αυτή τη φορά μπορώ να μάθω, αρκετά προβλέψιμα, ότι το ΒΡΎΟ θέματα αυτό το σφάλμα, διότι η Συνέλευση δεν βρίσκεται στο GAC.
Θέλω να πάρει κάτι θετικό από αυτό και να προσπαθήσουμε να αισθανόμαστε λίγο υπερήφανοι ότι έχω δημιουργήσει το Φυγάς MSIL συγκροτήσεων, αλλά δεν λειτουργεί. Είμαι απλά εκνευρισμένος. Θεωρώ τον εαυτό μου μουρμουρίζοντας "κότα ή το αυγό" κάτω από την αναπνοή μου.
Τελικά αποφασίζουν να punt. Δημιουργήσει ένα εξ ολοκλήρου νέο πρόγραμμα και copy/paste τον κώδικα από το incredible-cloaked-from-the-GAC-assembly μη-ηλικία εργασίας έργου πάνω σε αυτό το νέο σχέδιο. (Κοιτάζω για μια κατασκευή σημαία κάλεσα κάτι σαν "Απόκρυψη από τη συγκρότηση δεσμευτική εάν εγκατασταθεί στο GAC" αλλά δεν μπορώ να βρω ένα).
Εγκαθιστά τη δυνατότητα και να ενεργοποιήσετε και … λειτουργεί! Έτσι, μετά από όλα αυτά, Βασικά έπρεπε να «επανεκκίνηση’ το έργο μου. Ένας ακόμη λόγος γιατί μισώ υπολογιστές.
Είχα μάθει κάτι χρήσιμο από αυτό. Εγώ είχα την εγκατάσταση χαρακτηριστικά χρησιμοποιώντας τη γραμμή εντολών stsadm όλη την ημέρα και να χρησιμοποιήσει το "-δύναμη" επιλογή από συνήθεια. Για κάποιο λόγο, Δεν χρησιμοποιώ την επιλογή - force όταν εγκατέστησα το νέο έργο. Αυτή τη φορά, Έκανα πραγματικά, πραγματικά ξεχάσετε να αντιγράψετε το νέο αυτό έργο της συγκρότησης στο GAC. Ως εκ τούτου, Έλαβα ότι "FielNotFoundException" σφάλμα. Αυτή τη φορά, Εγώ το πήρα από stsadm, όταν δεν προσπάθησα να ενεργοποιήσετε τη δυνατότητα μέσω του προγράμματος περιήγησης web. Έτσι, -δύναμη παίζει πραγματικά δύο ρόλους. Σας επιτρέπει να εγκαταστήσετε εκ νέου ένα υπάρχον στοιχείο. Επίσης σας επιτρέπει να εγκαταστήσετε ένα αμαξάκι χαρακτηριστικό που δεν μπορεί να λειτουργήσει κατά το χρόνο εκτέλεσης με την καταστολή του σφάλματος. Ίσως λέει τόσο πολύ στη βοήθεια κάπου, αλλά ποτέ δεν το παρατήρησα.
</Τέλος>
Επίσης, Είχα μου 2 ώρες της hysteric nintendoSIXTYFOURRRR-σε-a-κακό τρόπο στιγμές όταν θα μετονομαστεί το Namespace του δέκτη χαρακτηριστικό, να βοηθήσει τον εντοπισμό όπου δικοί σας ή οποιουδήποτε άλλουδήποτε άρχισε.
Η ρίζα του προβλήματος βρίσκεται στο η αναπτυχθείσα wsp στη βάση δεδομένων του sharepoint. Διάβασα θέση σας, και ενώ αυτό πράγματι να διορθώσετε το πρόβλημα έχουμε μια τεράστια λύση με αρκετά έργα και δεκάδες αρχεία που συγκινούν τόσο τα πάντα δεν ήταν μια επιλογή.
Δεν έχει σημασία πόσο μπορείτε να ενημερώσετε σας GAC ή Συνέλευσή σας, Τι σας δίνει πρόβλημα είναι η Συνέλευση την τρέχουσα WSP εγκατασταθεί στο sharepoint.
Εύκολα μπορεί να παρατηρήσει ότι προσπαθώντας να το ανακαλέσει μόνο η λύση (δηλαδή όπου το λάθος συμβαίνει). Όλα όσα συμβαίνουν στην "επανατυλίξεως ώρα" θα πρέπει να θεωρείται "αναπτυχθεί wsp"-μόνο δεν το ίδιο το σχέδιο.
Λύση μου ήταν:
– Κεντρική διοίκηση: Ακυρώσετε την λύση
– Stsadm: deletesolution
– Visual Studio => Έργο => Πακέτο
– Stsadm: addsolution-αρχείο ProjectbinDebugProject.wsp
– Stsadm: deploysolution-όνομα project.wsp-allowGacDeployment για να άμεση - εκτελέσετε-δύναμη
– Visual Studio => Αναπτύξετε
Επίσης, διαγράφονται οι φάκελοι Μπιν και εντοπισμού σφαλμάτων από το έργο πριν από την εκτέλεση Deploy πάλι, μπορεί να μην έχουν κανένα αποτέλεσμα αλλά αξίζει σχολιασμό.
Αυτό λειτουργεί για τους δύο
"Χαρακτηριστικό … δεν θα μπορούσε να εγκατασταθεί επειδή η φόρτωση του συγκρότηση δέκτη συμβάντος"
και
"Απέτυχε να δημιουργήσει το χαρακτηριστικό αντικείμενο δέκτη από Συνέλευση"
Ευχαριστώ!
Φρανσίσκο
Μόλις περάσει μια-δυο ώρες προσπαθώντας να διορθώσετε αυτό το ζήτημα και να βρεθεί μια καλύτερη λύση από απλά να δημιουργήσει εκ νέου το έργο.
Αποδείχθηκε ότι για κάποιο λόγο Visual Studio είχε τεθεί ο στόχος της κατασκευής σε x 86 αντί x 64 ή MSIL – η Συνέλευση ήταν στο GAC, απλά δεν το ίδιο GAC που 64 bit SharePoint έψαχνα σε.