J'ai 2 projets dans ma solution:
- Assemblage (bibliothèque de base)
- Assemblage de test (NUnit)
J'avais déclaré l'assemblage de test en tant qu'assemblage d'amis dans le premier projet:
[assembly: InternalsVisibleTo ("Company.Product.Tests")]
Tout fonctionnait bien jusqu'à ce que je réalise que j'ai oublié de configurer la solution pour signer mes assemblages. Vous avez donc créé un fichier snk et configuré le projet Visual Studio pour signer le premier assembly (Basic Library). Maintenant, lorsque je compile le premier projet, j'obtiens l'erreur suivante:
La référence d'assemblage d'ami «Company.Product.Tests» n'est pas valide. Les assemblys signés avec un nom fort doivent spécifier une clé publique dans leurs déclarations InternalsVisibleTo.
J'ai essayé d'extraire la clé publique de mon fichier snk à l'aide de l'utilitaire sn mais il génère un fichier binaire câblé que je ne sais pas comment utiliser. Comment puis-je résoudre le problème?
AssemblyInfo.cs
. Depuis lors, le bon nom à utiliser est le `` nom de l'assembly '' de la boîte de dialogue Propriétés / Application du projet (qui diffère à nouveau du nom du projet dans l'explorateur de solutions de Visual Studio).Vous pouvez directement obtenir publicKey de l'assemblage qui vous intéresse, sans magie avec sn.exe
la source
Je pense que vous devez mettre le nom fort, qui serait quelque chose comme "Company.Product.Tests, Version = 1.0.0.0, Culture = neutre, PublicKeyToken = 17135d9fcba0119f". Je suppose que Company.Product.Tests est le nom de votre assemblage et 17135d9fcba0119f est la clé publique.
Une autre façon de résoudre ce problème consiste à ne pas utiliser d'assemblys séparés. Je mets généralement le code source et le code de test dans le même assemblage. Je ne sais pas si vous craignez particulièrement de devoir les séparer.
la source