Pregunta

Tengo un ensamblaje que ya está creado, digamos Static.dll, y un ensamblaje dinámico que estoy creando en tiempo de ejecución, digamos Dynamic. Dynamic crea algún código IL para crear un nuevo tipo a partir de Static.dll.Cuando Dynamic se crea (se guarda correctamente), el ejecutable, cuando se ejecuta, produce errores porque no puede cargar el ensamblaje Static.dll tipo.Creo que esto está sucediendo desde el Dynamic La salida exe no puede encontrar este dll (o al menos eso es lo que supongo).

¿Cómo se puede lograr agregar esto? Static.dll referencia para que cuando alguien ejecute el resultado ejecutable resultante de Dynamic ¿Que puede encontrar los tipos referenciados?

Se acerca de Assembly.Load(), pero esto por sí solo no cambia nada.O al menos, no estoy seguro de qué me proporciona esto, ya que no necesito usar el tipo en tiempo de ejecución, sino cuando ejecuto el Dynamic ejecutable.

Por último, controlo el Static.dll, entonces, si hay algo que pueda hacer con el proyecto para solucionarlo, se podría hacer, sin embargo, es necesario que permanezca separado (no quiero emitir esta biblioteca cada vez que creo un ensamblaje dinámico).Básicamente, yo pensar Quiero tener mi asamblea dinámica para tener un .assembly extern mscorlib en su manifiesto guardar Static es el lugar del mscorlib.

Gracias

¿Fue útil?

Solución

¿Cómo se puede lograr agregar esto? Static.dll referencia para que cuando alguien ejecute el resultado ejecutable resultante de Dynamic ¿Que puede encontrar los tipos referenciados?

La referencia se agregará automáticamente.Tenga en cuenta que las reglas normales de sondeo de ensamblajes se aplican cuando se ejecuta su ensamblaje dinámico, para encontrar el ensamblaje.Debes (uno de):

  • enviar static.dll junto condynamic.dll
  • coloque static.dll en el GAC (pero por favor:¡no hagas esto!)
  • ejecute Dynamic.dll en un AppDomain personalizado con una configuración de ruta de sondeo personalizada que permita encontrar static.dll
  • manejar AppDomain.AssemblyResolve para proporcionar static.dll
  • use algo como ILMerge para fusionar static.dll ydynamic.dll
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top