ILMerge DLL: Ensamblado no fusionado correctamente, aún listado como referencia externa


En el proceso de compilación de una herramienta.NET C#, he estado usando ILMerge para fusionar los ensamblados en un solo exe.

Recientemente he añadido una nueva biblioteca de clases, y ahora el ILMerge está fallando. ¡He recordado decirle que se fusione en el nuevo DLL!

Ahora me está dando este error, que realmente no entiendo:

ILMerge.Fusionar: El ensamblaje 'DataObjects' no se fusionó en correctamente. Todavía está en la lista como un referencia externa en el target Asamblea.

Todas las referencias de ensamblado las he hecho usando referencias de 'proyecto', y no ha fallado en el pasado.

¿Puede alguien explicarme este error o sugerir una solución, por favor?

Author: Fiona - myaccessible.website, 2009-11-27

3 answers

Tuve que usar el argumento /closed. Según los documentos oficiales:

Cerrado

Cuando esto se establece antes de llamar a Merge, luego el "cierre transitivo" de la los conjuntos de entrada se calculan y agregan a la lista de ensamblados de entrada. Un asamblea se considera parte de la cierre transitivo si es referenciado, ya sea directamente o indirectamente, a partir de uno de los ensambles de entrada especificados y tiene una referencia externa a uno de los entrada asambleas, o uno de los asambleas que tiene tal referencia. Complicado, pero así es la vida...

 36
Author: Fiona - myaccessible.website,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-31 13:24:54

Recibí un mensaje de error similar al intentar publicar una aplicación web que combinaba todas las salidas en un solo ensamblado:

Se produjo un error al fusionar ensamblados: ILMerge.Merge: El ensamblado de destino se enumera a sí mismo como una referencia externa.

Esto sucede si el nombre del ensamblado con el que se está fusionando coincide con el nombre del ensamblado de la aplicación web bajo Properties > Application. Cambiar el nombre del ensamblado de salida debería solucionarlo.

 5
Author: Hugh Jeffner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-05 17:55:58

Obtuve este error y apuntaba a Microsoft.Xrm.Referencia Sdk que estaba fusionando en el único dll. El problema se solucionó cuando establecí otra referencia, Microsoft.Xrm.Sdk.Implementación para fusionarse en la dll también. Lo curioso es que en un proyecto separado tuve la 1ª fusión de referencia y la 2ª dll de implementación no se fusionó y no se quejó en absoluto.

 0
Author: drzounds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-18 22:38:05