c# prueba unitaria con ensamblados firmados

Tengo un problema con una prueba unitaria creada. tengo 2 proyectos Uno es el proyecto "real" y el otro es el proyecto de prueba de unidad. Después de hacer clic en un método en el proyecto real y seleccionar "crear pruebas unitarias". Luego obtuve el código para la prueba unitaria en el proyecto de prueba.

Ahora, después de compilar, aparece el siguiente mensaje de error:

La referencia de ensamblado de amigos 'ASSEMBLYNAME' no es válida. Los ensamblados firmados con nombre seguro deben especificar una clave pública en sus declaraciones InternalsVisibleTo.

Luego agregué una clave pública a InternalsVisibleTo-Declaration en AssemblyInfo.cs del proyecto real. Pero ahora recibo un error de compilación para cada clase en el proyecto real que es interno y está sellado. El mensaje es:

No se puede acceder a 'CLASSNAME' debido a su nivel de protección

¿Qué puedo hacer para arreglar esto? ¿Algunas ideas?

preguntado el 31 de julio de 12 a las 13:07

¿Están sus pruebas en el mismo espacio de nombres/ensamblado? -

No. Los espacios de nombres son diferentes. -

el especificador 'interno' indica que el acceso está limitado al mismo ensamblaje, por lo que si sus pruebas están en un ensamblaje diferente, es probable que vea este error:

Una respuesta potencial se puede encontrar en esta pregunta stackoverflow.com/questions/106907/… -

Pero, por lo tanto, agregué InternalsVisibleTo-Declaration en AsseblyInfo.cs del proyecto real. El msdn dice que esto debería funcionar... -

2 Respuestas

Ingrese el nombre de la asamblea, luego una coma y su clave pública. Recuerde eliminar cualquier salto de línea, etc. en su clave pública cuando la pegue en su archivo AssemblyInfo.

[assembly: InternalsVisibleTo("AssemblyName, PublicKey=xxx")]

Respondido 31 Jul 12, 14:07

Sí, agregué el token de clave pública. Se parece a lo siguiente:

[assembly: InternalsVisibleTo("NAMESPACE, PublicKey=00240000048000009 40000000602000000240000525341310004000001000100354f0966de4a992baa1ed0f2 faf643f86fd2c74aee8b9dc6c0321f9d658166658ec154aaed70ab4b92a21a3c1e7e53 200232043c0d0b791496fd0201d21f18433ee9507022f2a72829d1dd32b106f86c68e 620d2a39f02f3a8b82aa23196ef7f7f4880020dd340dd2dfecdd1b3051b1e659c9e18c 8e21cc90bc33de306712b86")]

Respondido 31 Jul 12, 14:07

Por "ESPACIO DE NOMBRES" ¿de hecho quiere decir el nombre del ensamblado? Si no, ese podría ser tu problema. - Iridium

Lo siento. Me refería a AssemblyName, no al Namespace en InternalsVisibleTo - Tomtom

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.