This post is available in english here.

Dans un récent projet, dans le but de faire du test unitaire, j'ai du utiliser l'attribut InternalsVisibleTo ,  qui étend la portée du qualificateur internal. Cela permet de séparer le code de test unitaire de l'assembly principale, et ainsi éviter de publier le code de test unitaire ou de publier les classes internes dans le simple but de pouvoir les tester.

C'est un attribut très intéressant à plusieurs titres, mais en l'utilisant, vous pourriez tomber face à ce message :

error CS1726: Friend assembly reference 'Dummy' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations.

Le problème est que mes deux assemblies source et destination n'étaient pas signées. J'ai alors essayé d'ajouter un "faux" PublicKey ou PublicKeyToken comme suggéré ici et ici, mais comme beaucoup de monde, je ne veux pas m'encombrer avec la signature des assemblies pour le moment dans mon projet.

En fait, il se trouve que le compilateur considère l'assembly source comme "signée" si l'un des deux attributs AssemblyKeyFile ou AssemblyKeyName sont présents, même ils sont vides.

Donc, pour pouvoir utiliser l'attribut InternalsVisibleTo avec des assemblies non signées, enlevez simplement les attibuts AssemblyKeyFile et AssemblyKeyName si vous ne les utilisez pas.