Question

J'ai un ensemble de plusieurs assemblys (un assembly doit être utilisé comme API et cela dépend d'autres assemblys).Je voudrais fusionner tous les assemblys en un seul assembly mais empêcher tous les assemblys à l’exception de celui de l’API d’être visibles de l’extérieur.

Je vais ensuite obscurcir cet assemblage avec Xenocode.D'après ce que j'ai vu, il est impossible d'internaliser l'assemblage avec Xenocode.

J'ai vu ILMerge de Microsoft, mais je n'ai pas pu savoir s'il pouvait faire ce que je voulais.http://research.microsoft.com/~mbarnett/ILMerge.aspx

Était-ce utile?

La solution 2

Je sais que Xenocode peut fusionner des assemblys en un seul, mais je ne sais pas s'il internalisera d'autres assemblys non principaux.

J'ai trouvé le commutateur /internalize dans ILMerge qui "internalise" tous les assemblys sauf le principal.Plutôt utile !

Autres conseils

J'ai utilisé ILMerge de Microsoft pour internaliser les DLL dans une seule bibliothèque assemblée.Il existe une interface graphique utile pour utiliser ILMerge appelée NuGenUnify.Tu peux le trouver ici.

Je vous suggère de regarder le InternalsVisibleTo attribut sur MSDN.

Vous pouvez tout marquer dans tous les assemblys (sauf l’assembly API) comme internal au lieu de public, puis montrez-les à nouveau uniquement à votre assemblage d'API.

Cela fait, l'utilisation d'ILMerge devrait vous donner un seul assembly avec uniquement les classes API visibles.

Il y a quelques problèmes avec ILMerge, mais je pense que si vous ajoutez des optimisations + une fusion + un obscurcissement, vous risquez de créer une situation très complexe pour peu d'avantages.

Pourquoi ne pas avoir un seul assembly et rendre publique uniquement votre API ?

Si vous les distribuez toujours sous la forme d’un seul assembly, il n’y a aucune raison de ne pas simplement les compiler ainsi.Vous bénéficierez davantage des optimisations du compilateur et la compilation sera également plus rapide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top