2 votes

Des problèmes avec MEF et/ou Unity lors de l'obfuscation ?

J'utilise actuellement MEF dans une architecture de plugins. Je suis sur le point d'obscurcir mon code et je me demandais si cela n'allait pas perturber le MEF et sa découverte. J'utilise un DirectoryCatalog pour résoudre les plugins et je prévois d'obscurcir les plugins également. Certaines des extensions sont également exécutées dans l'assemblage principal, qui sera également obfusqué.

Ma question est donc de savoir si cela sera un problème avec le MEF (l'obscurcissement) et si oui, est-ce que Unity souffre également de la même chose ? Merci d'avance.

5voto

JRoppert Points 2558

Je suis tombé sur un problème avec Unity et Obfuscation. Dans ce cas, les dépendances à résoudre par Unity étaient marquées avec l'attribut [ServiceDependency] sur les propriétés. En IL, une propriété n'est rien d'autre qu'une méthode Get- et Set-, liées ensemble par des métadonnées. C'est ce qui constitue une propriété, rien d'autre. L'obscurcissement est arrivé et a remplacé la propriété par les méthodes natives Get- et Set-. Vous voyez le problème ? La propriété a disparu (remplacée par des méthodes). Pas de propriété signifie pas d'attribut [ServiceDependency] sur la propriété signifie pas d'injection de dépendance signifie référence nulle signifie crash !

La solution consiste à marquer les propriétés avec [ServiceDependency] AND [Obfuscation(Feature = "renaming", Exclude = true)] (partie de .Net Framework).

Si c'est important pour vous : L'obfuscation a été faite avec Dotfuscator Professional.

2voto

Nate Points 14101

Étant donné que (dans un monde idéal) la bbfuscation ne modifie pas la compatibilité binaire d'un assemblage, je ne vois pas de problème.

Cela dit, je n'ai pas encore travaillé sur les assemblages obfusqués et le MEF, je peux donc me tromper.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X