Tenho 2 projetos em minha solução:
- Montagem (Biblioteca Básica)
- Conjunto de teste (NUnit)
Eu havia declarado a montagem de teste como montagem de amigos no primeiro projeto:
[assembly: InternalsVisibleTo ("Company.Product.Tests")]
Tudo estava funcionando bem até que percebi que esqueci de configurar a solução para assinar minhas montagens. Então criei um arquivo snk e configurei o projeto do Visual Studio para assinar a primeira montagem (Biblioteca Básica). Agora, quando compilo o primeiro projeto, recebo o seguinte erro:
A referência do assembly amigo 'Company.Product.Tests' é inválida. Os assemblies assinados de nome forte devem especificar uma chave pública em suas declarações InternalsVisibleTo.
Tentei extrair a chave pública do meu arquivo snk usando o utilitário sn, mas ele gera um arquivo binário com fio que não tenho certeza de como usar. Como posso resolver o problema?
AssemblyInfo.cs
. Desde então, deduziu que o nome correto a ser usado é o 'nome do assembly' da caixa de diálogo Propriedades / Aplicativo do projeto (que difere novamente do nome do projeto no explorador de solução do Visual Studio).Você pode obter publicKey diretamente do assembly de seu interesse, sem mágica com sn.exe
fonte
Acho que você precisa colocar o nome forte, que seria algo como "Company.Product.Tests, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 17135d9fcba0119f". Presumo que Company.Product.Tests seja o nome do assembly e 17135d9fcba0119f é a chave pública.
Outra maneira de resolver esse problema seria não usar assemblies separados. Normalmente coloco o código-fonte e o código de teste no mesmo assembly. Não sei se você tem alguma preocupação especial de separá-los.
fonte