Utilizzando AssemblyBuilder, come posso incorporare tutti o alcuni degli assembly di riferimento anziché collegarli nell'assembly salvato?
-
23-08-2019 - |
Domanda
Ho un assembly in esecuzione, che genera dinamicamente un altro assembly utilizzando AssemblyBuilder.
L'assembly generato è costituito da funzioni che testano semplicemente la costruzione di determinate classi nell'assembly in esecuzione.Poiché le funzioni nell'assembly generato fanno riferimento alle classi nell'assembly in esecuzione, desidero che l'assembly in esecuzione si incorpori nell'assembly che crea.
Finora sono riuscito a generare solo un assembly che si collega all'assembly in esecuzione, ma non uno che lo incorpora.È importante avere un solo assembly finale (.dll).
È necessario incorporare l'assembly come risorsa?Se é cosi, come?Non voglio dover scrivere codice per caricare dinamicamente l'assembly incorporato, a meno che non sia l'unico modo.Sto cercando qualcosa di semplice come AssemblyBuilder.EmbedAssembly( GetExecutingAssembly() ).
Soluzione
Non esiste un modo semplice.Hai almeno due scelte:
- Incorpora gli assembly di riferimento come risorse gestite, ed emettere un gancio di carico di montaggio quello sarà caricare gli assiemi dal flusso di risorse su richiesta.
- Utilizzare un passaggio post-emissione utilizzando ILMerge per unire gli assembly tutti insieme.