Soluzione al problema: “FileNotFoundException” Con il mio ricevitore di funzionalità.

Stavo lavorando su una caratteristica la scorsa settimana che vorrei aggiungere alcuni ricevitori di eventi a un'istanza di elenco specifico. (Ho bloggato un po' su quel ricevitore elenco qui).

Utilizzando la riga di comando, Potuto installare la funzionalità con nessun errore (ma vedi sotto per l'errore nascosto). Quando ho provato a distribuire la funzionalità sul sito, MOSS si è lamentato di "FileNotFoundException" errore. Questo blog descrive come ho risolto.

Questo è l'errore che MOSS mi ha mostrato nel browser web:

Funzione ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ potrebbe non essere installato perché il caricamento di assembly del ricevitore di eventi "xyzzyFeatureReceiver_0" non riuscita: System.io.FileNotFoundException: Impossibile caricare il file o l'assembly ' xyzzyFeatureReceiver_0’ o una delle relative dipendenze. Il sistema non riesce a trovare il file specificato.
Nome del file: ' xyzzyFeatureReceiver_0’
presso System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Prove assemblySecurity, Assemblea locationHint, StackCrawlMark& stackMark, ThrowOnFileNotFound booleano, ForIntrospection Boolean)
presso System.Reflection.Assembly.InternalLoad(AssemblyRef AssemblyName, Prove assemblySecurity, StackCrawlMark& stackMark, ForIntrospection Boolean)
presso System.Reflection.Assembly.InternalLoad(AssemblyString stringa, Prove assemblySecurity, StackCrawlMark& stackMark, ForIntrospection Boolean)
a Reflection(AssemblyString stringa)
presso Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Assemblea associazione registrazione è attivata OFF.
Abilitare la registrazione di assembly legano fallimento, impostare il valore del registro di sistema [HKLMSoftwareMicrosoftFusion.!EnableLog] (DWORD) A 1.
Nota: C'è qualche penalizzazione delle prestazioni associati alla registrazione di guasto legano assieme.
Per disattivare questa funzionalità, rimuovere il valore del registro di sistema [HKLMSoftwareMicrosoftFusion.!EnableLog].

Risolvere i problemi con Windows SharePoint Services.

Saper provocare deliberatamente quell'errore: non installare l'assembly nella global assembly cache. Ma, era nella GAC. Normalmente installare assembly nella GAC trascinandoli nella c:\WINDOWSassembly cartella utilizzando Esplora risorse di windows. Non ho mai sentito 100% comodo che fare perché ho sempre pensato che gacutil esistito per un motivo … così ho provato che. Non faceva alcuna differenza.

Ho cercato il Internets e trovato questo post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Il poster è capitato di usare lo stesso pezzo di radice di codice (dal libro all'interno di WSS da questo elenco) così che era un segno di speranza. Tuttavia, il suggerimento di decorare l'assembly con un [Assemblea: ] direttiva non ha senso per me. Ho provato comunque e non mi sbagliavo. Non faceva alcuna differenza.

Poi ho notato che la mia definizione di classe non era pubblico. Reso pubblico e che non faceva alcuna differenza.

Successivo, Sono andato alla difficoltà di abilitazione "Assemblea associazione fallimento log" (seguendo le istruzioni utili e precise fornite) e questo è dove le cose hanno cominciato a farsi interessanti. Tale log mi mostra che il runtime sta cercando ovunque su tale server per la mia Assemblea. Sembra anche essere alla ricerca di essa nel mio armadietto dei medicinali. Ma … esso non cercarlo nella GAC.

Ho messo sulla mia giacca invernale e andare alla ricerca di Internets nuovamente e scoprire che qualcuno ha avuto questo problema troppo. La lunga discussione in tale registrazione peters fuori nel nulla e non riesco a trovare una soluzione.

Mi muovo la mia Assemblea in uno dei posti che nel registro reclami sta cercando e fare un po' più progressi. Io sono ricompensato con un nuovo errore nel browser quando tento di attivare la funzionalità:

Impossibile creare l'oggetto ricevitore caratteristica dal gruppo "xyzzyFeatureReceiver_0", tipo "Conchango.xyzzyFeatureReceiver" per la funzione b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: ArgumentNullException: Valore non può essere null.
Nome del parametro: tipo
corrispondenza System.Activator.CreateInstance(Tipo tipo, NonPublic booleano)
corrispondenza System.Activator.CreateInstance(Tipo tipo)
presso Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Risolvere i problemi con Windows SharePoint Services.

Tempo per un ultimo viaggio a Internets!

Questa volta scopro, abbastanza prevedibile, quel muschio genera questo errore perché l'assembly non è nella global assembly cache.

Voglio ottenere qualcosa di positivo da questo e provare a sentire un po' orgogliosa che ho creato il Fuggitivo di assembly MSIL, ma non funziona. Io sono semplicemente infastidito. Mi trovo a borbottando "uovo o la gallina" sotto il mio respiro.

Ho finalmente deciso a punt. Creare un progetto completamente nuovo e copia/incolla il codice dal progetto non funzionante incredible-cloaked-from-the-GAC-assembly sopra a questo nuovo progetto. (Cercare un flag di compilazione chiamato qualcosa come "Nascondi da associazione se installato nella Global Assembly Cache assembly" ma non riesce a trovare uno).

Installare la funzionalità e attivarlo e … funziona! Così, Dopo tutto ciò che, Ho dovuto fondamentalmente ' riavviare’ il mio progetto. Questo è un altro motivo perche ' odio il computer.

Ho imparato qualcosa di utile da questo. Ero stato l'installazione di funzionalità utilizzando la riga di comando stsadm tutto il giorno e state usando il "-forza" opzione per abitudine. Per qualche motivo, Non ho usato il - opzione force quando ho installato il nuovo progetto. Stavolta, In realtà ho fatto, veramente dimenticare copiare assembly di questo nuovo progetto nella GAC. Di conseguenza, Ho ricevuto quel FielNotFoundException"" errore. Stavolta, Ho preso da stsadm, non quando ho cercato di attivare la funzione tramite il browser web. Così, -forza in realtà svolge due ruoli. Esso consente di re-installare una funzionalità esistente. Inoltre consente di installare una funzionalità buggy che non può funzionare in fase di esecuzione di eliminazione dell'errore. Probabilmente dice tanto nella guida da qualche parte ma non ho mai notato.

</fine>

3 pensieri su "Soluzione al problema: “FileNotFoundException” Con il mio ricevitore di funzionalità.

  1. Francisco

    Anche, Ho avuto il mio 2 ore di momenti di nintendoSIXTYFOURRRR in-un-male-vie isterico quando rinominato il Namespace del ricevitore caratteristica, per tenere traccia dove tuo o di chiunque altro ha cominciato.

    Risposta
  2. Francisco

    La radice del problema si trova su wsp distribuito nel database di sharepoint. Letto il tuo post e mentre esso effettivamente risolvere il problema abbiamo una soluzione enorme con diversi progetti e decine di file così tutto il movimento non era un'opzione.

    Non importa quanto si aggiorna il tuo GAC o assembly, che cosa ti dà problemi sono l'assembly in corrente WSP installato sharepoint.

    Si può facilmente notato che cercando di ritrarre solo la soluzione (che è dove si verifica l'errore). Tutto ciò che accade in tempo di ritrazione"" dovrebbe essere considerato "distribuito wsp"-non solo il progetto stesso.

    È stata la mia soluzione:

    – Amministrazione centrale: Annullare la soluzione
    – Stsadm: deletesolution
    – Visual Studio => Progetto => Pacchetto
    – Stsadm: addsolution-ProjectbinDebugProject.wsp del file
    – Stsadm: deploysolution-project.wsp nome-immediato - allowgacdeployment-forza
    – Visual Studio => Distribuire

    Ho eliminato anche le cartelle bin e debug dal progetto prima di eseguire nuovamente il Deploy, potrebbe non avere alcun effetto, ma vale la pena commentare.

    Questo funziona per entrambi

    "Caratteristica … potrebbe non essere installato perché il caricamento di assembly del ricevitore di eventi"
    e
    "Impossibile creare l'oggetto ricevente caratteristica dall'assembly"

    Grazie!
    Francisco

    Risposta
  3. Tom Clarkson

    Abbiamo appena trascorso un paio di ore a cercare di risolvere questo stesso problema e trovato una soluzione migliore rispetto semplicemente ricreare il progetto.

    Si è scoperto che per qualche motivo che Visual Studio aveva impostato la destinazione build x86 anziché x64 o MSIL – è stato l'assembly nella GAC, non solo la stessa GAC che 64 po' SharePoint era alla ricerca.

    Risposta

Lasciare una risposta a Francisco cancella risposta

L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *