Un autre "gotcha" possible : Le nom de l'assemblage ami que vous spécifiez dans le champ InternalsVisibleToAttribute
doit exactement correspond au nom de l'assemblage de votre ami tel qu'il apparaît dans les propriétés du projet de l'ami (dans l'onglet Application).
Dans mon cas, j'avais un projet Thingamajig
et un projet complémentaire ThingamajigAutoTests
(les noms ont été changés pour protéger les coupables) qui ont tous deux produit des assemblages non signés. J'ai dûment ajouté l'attribut [assembly: InternalsVisibleTo( "ThingamajigAutoTests" )]
au Thingamajig \AssemblyInfo.cs et commenté le fichier AssemblyKeyFile
y AssemblyKeyName
comme indiqué ci-dessus. Le site Thingamajig
s'est bien construit, mais ses membres internes ont obstinément refusé d'apparaître dans le projet autotest.
Après m'être beaucoup creusé la tête, j'ai revérifié les données de la ThingamajigAutoTests
et j'ai découvert que le nom de l'assemblage était spécifié comme étant "ThingamajigAutoTests.dll". Bingo - J'ai ajouté l'extension ".dll" au nom de l'assemblage dans le fichier de propriétés du projet. InternalsVisibleTo
attribut, et les pièces se sont mises en place.
Parfois, ce sont les plus petites choses...
1 votes
Pouvez-vous afficher ce que vous avez pour l'attribut InternalsVisibleTo sur la classe que vous essayez d'exposer ? Il est difficile de dire ce qui ne va pas sans voir ce que vous regardez.