2013-05-03 14 views
7

La documentazione (here e here) è in particolare mancanza di informazioni su come riferimenti a moduli vengono risolti:In che modo Orchard risolve i riferimenti nei moduli?

Riferimenti Risoluzione

(TODO: Spiegare come Orchard capisce i riferimenti, cercando in "Riferimenti "la sezione del file csproj oltre a esaminare i binari di assembly aggiuntivi rilasciati in ogni directory" bin "del modulo)

Sfortunatamente, questo è esattamente le informazioni di cui ho bisogno. Ho creato un modulo personalizzato che ha un riferimento a una DLL interna personalizzata. Quando cerco di usare una classe da questa DLL, ottengo la seguente eccezione:

Impossibile caricare il tipo 'Custom.MyClass' dal assembly 'personalizzato, Version = [versione], cultura = [cultura], PublicKeyToken = [Token]'.

Quindi, la mia domanda è quindi: che cosa fa Orchard con i riferimenti dei moduli, e c'è qualcosa di speciale che devo fare per avere Orchard a prendere i riferimenti del mio modulo?

MODIFICA: Sembra che nel documento this blog post siano disponibili informazioni migliori e i relativi commenti. Tuttavia, il mio assembly personalizzato esiste già in src\Orchard.Web\App_Data\Dependencies e sto ancora ricevendo l'errore.

EDIT2: abbiamo una copia della DLL personalizzato nella cartella lib, così ho provato riferimento che uno invece (come abbiamo un altro modulo che lo fa con successo), ma ancora nessun cambiamento.

Edit3 :: In riferimento ai due precedenti modifiche, non è la copia dalla cartella lib alla cartella App_Data\Dependencies. Ho appena aggiunto una nuova DLL alla cartella lib e l'ho fatta riferimento e non è stata visualizzata nella cartella Dependencies. Penso che l'attuale Custom.dll non sostituisca quello che è lì, motivo per cui sto ricevendo l'errore che sono. Ma perché la copia di Orchard non viene copiata nella cartella Dependencies?

risposta

1

Per fare in modo che Orchard usi il modulo personalizzato è necessario averlo sul percorso: your_web_application_path/Modules/your_custom_module, stiamo usando collegamenti simbolici per raggiungere questo obiettivo.

Quindi il modulo principale (applicazione Web) dovrebbe visualizzare il modulo personalizzato. Se si aggiunge un nuovo modulo all'app di frutteto esistente, è probabilmente necessario abilitarlo manualmente dal menu del pannello di amministrazione/moduli. Per le nuove installazioni è possibile aggiungere la direttiva enable enable alla propria ricetta e aggiungere dipendenza al file module.txt principale (assumendo che si desideri che il modulo sia sempre attivo).

Un'altra difficoltà riprese consigli:

  • assicurarsi che il proprio percorso del modulo di compilazione è impostato su bin/cartella (non qualche bin/debug ecc)
  • assicurarsi che il modulo è in realtà un modulo frutteto (hanno modulo.file txt) e viene visualizzato nel pannello di amministrazione/moduli
  • assicurarsi che sia abilitato, i nuovi moduli sono disabilitati per impostazione predefinita
  • assicurarsi che le librerie di riferimento siano referenziate da una cartella statica Non intendo da un contenitore simile che viene ripulito durante ricostruzione
+0

Il modulo si presenta e funziona bene una volta spostate le DLL di riferimento (che si trovano in una cartella statica) nella cartella 'Dipendenze'. (Il modulo è nel posto giusto - l'ho creato usando la riga di comando del frutteto.) – zimdanen

Problemi correlati