Domanda

Ho un assembly che è già stato creato, diciamo Static.dll, e un assembly dinamico che sto creando in fase di runtime, diciamo Dynamic. Dynamic crea del codice IL da cui creare un nuovo tipo Static.dll.Quando Dynamic viene creato (salva con successo), l'eseguibile, quando viene eseguito, si verifica un errore perché non è in grado di caricare l'assembly Static.dll tipo.Credo che questo stia accadendo dal momento che il Dynamic l'output exe non riesce a trovare questa dll (o almeno questa è la mia ipotesi).

Come può realizzare l'aggiunta in questo Static.dll riferimento in modo che quando qualcuno esegue l'output eseguibile risultante di Dynamic che possa trovare i tipi di riferimento?

Lo so Assembly.Load(), ma questo da solo non cambia niente.O almeno, non sono sicuro di cosa mi dia questo dato che non ho bisogno di usare il tipo in fase di esecuzione, ma piuttosto quando eseguo il Dynamic eseguibile.

Infine, controllo il Static.dll, quindi se c'è qualcosa che posso fare con il progetto per risolverlo, potrebbe essere fatto, tuttavia, deve rimanere separato, non voglio emettere questa libreria per ogni volta che creo un assembly dinamico.Fondamentalmente, io pensare Voglio avere il mio assemblaggio dinamico per avere un .assembly extern mscorlib nel suo manifesto salva Static è il luogo del mscorlib.

Grazie

È stato utile?

Soluzione

Come può realizzare l'aggiunta in questo Static.dll riferimento in modo che quando qualcuno esegue l'output eseguibile risultante di Dynamic che possa trovare i tipi di riferimento?

Il riferimento verrà aggiunto automaticamente.Si noti che le normali regole di sondaggio dell'assembly si applicano quando l'assembly dinamico viene eseguito, quindi per trovare l'assembly.È necessario (uno di):

  • nave statica.dll accanto dinamica.DLL
  • metti statica.dll nel GAC (ma per favore:non farlo!)
  • eseguire dinamica.dll in un AppDomain personalizzato con una configurazione di percorso di sondaggio personalizzata che consente di static.dll essere trovato
  • gestire AppDomain.AssemblyResolve per fornire statica.DLL
  • usa qualcosa come ILMerge per fondere statico.dll e dinamica.DLL
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top