Pregunta

Tengo un conjunto de múltiples ensamblajes (un ensamblaje se usará como API y depende de otros ensamblajes).Me gustaría fusionar todos los ensamblajes en un solo ensamblaje, pero evitar que todos los ensamblajes, excepto el de API, sean visibles desde el exterior.

Luego ofuscaré este ensamblaje con Xenocode.Por lo que he visto, es imposible internalizar el ensamblaje con Xenocode.

He visto ILMerge de Microsoft, pero no pude determinar si puede hacer lo que quiero.http://research.microsoft.com/~mbarnett/ILMerge.aspx

¿Fue útil?

Solución 2

Sé que Xenocode puede fusionar ensamblajes en uno, pero no estoy seguro de si internalizará otros ensamblajes no primarios.

Encontré el modificador /internalize en ILMerge que "internaliza" todos los ensamblajes excepto el principal.¡Muy útil!

Otros consejos

He utilizado ILMerge de Microsoft para internalizar archivos DLL en una única biblioteca ensamblada.Existe una GUI útil para usar ILMerge llamada NuGenUnify.Puedes encontrarlo aquí.

Te sugiero que mires el InternalsVisibleTo atributo en MSDN.

Puede marcar todo en todos los ensamblajes (excepto el ensamblaje API) como internal en lugar de public, luego vuelva a mostrarlos solo en su ensamblaje de API.

Una vez hecho esto, usar ILMerge debería brindarle un ensamblado único con solo las clases API visibles.

Hay algunos problemas con ILMerge, pero creo que si agrega optimizaciones + fusión + ofuscación, es probable que cree una situación muy compleja con pocos beneficios.

¿Por qué no tener solo un ensamblado y hacer pública solo su API?

Si siempre los distribuye como un único ensamblado, no hay razón para no compilarlos así.Obtendrá más beneficios de las optimizaciones del compilador y también será más rápido de compilar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top