Tengo 2 proyectos en mi solución:
- Ensamblaje (biblioteca básica)
- Ensamblaje de prueba (NUnit)
Había declarado el ensamblaje de prueba como ensamblaje de amigos en el primer proyecto:
[assembly: InternalsVisibleTo ("Company.Product.Tests")]
Todo funcionaba bien hasta que me di cuenta de que me había olvidado de configurar la solución para firmar mis ensamblajes. Así que creó un archivo snk y configuró el proyecto de Visual Studio para firmar el primer ensamblaje (Biblioteca básica). Ahora, cuando compilo el primer proyecto, aparece el siguiente error:
La referencia de ensamblado de un amigo "Company.Product.Tests" no es válida. Los ensamblados firmados con nombre seguro deben especificar una clave pública en sus declaraciones InternalsVisibleTo.
Intenté extraer la clave pública de mi archivo snk usando la utilidad sn, pero genera un archivo binario cableado que no estoy seguro de cómo usarlo. ¿Cómo puedo solucionar el problema?
AssemblyInfo.cs
. Desde entonces, el nombre correcto para usar es el 'nombre de ensamblado' del cuadro de diálogo Propiedades / Aplicación del proyecto (que nuevamente difiere del nombre del proyecto en el explorador de soluciones de Visual Studio).Puede obtener directamente publicKey del ensamblaje que le interese, sin magia con sn.exe
fuente
Creo que debe ingresar el nombre seguro, que sería algo así como "Company.Product.Tests, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 17135d9fcba0119f". Supongo que Company.Product.Tests es su nombre de ensamblado y 17135d9fcba0119f es la clave pública.
Otra forma de resolver este problema sería no utilizar ensamblajes separados. Normalmente pongo el código fuente y el código de prueba en el mismo ensamblado. No sé si tiene alguna preocupación especial de que deba separarlos.
fuente