Puedo insertar la línea:

[assembly: InternalsVisibleTo("MyTests")]

dentro de mi proyecto bajo prueba( Properties/AssemblyInfo.cs) donde MyTests es el nombre de la Unidad de proyecto de Prueba. Pero por alguna razón que todavía no puede acceder a los métodos internos de la unidad de proyecto de prueba.

Alguna idea sobre lo que estoy haciendo mal ?

  • Ha sido un muuuucho tiempo, pero creo que los dos conjuntos tienen que ser firmados con la misma firma?
  • posibles duplicados de InternalsVisibleTo atributo no funciona
  • He leído que en una pregunta ASÍ, pero no estoy seguro de si eso puede crear problemas en el futuro. Yo también podía manejar a firmar mi asambleas.
  • Usted no necesita firmar, si ambos conjuntos no están firmados todo el trabajo. Pero no lea las respuestas a la pregunta vinculada.
InformationsquelleAutor Cemre | 2013-09-17

4 Comentarios

  1. 53

    Si la asamblea está firmado con un nombre fuerte mira esta respuesta.

    De lo contrario, compruebe que el nombre de su conjunto de prueba realmente es «MyTests.dll» (no tiene que coincidir con el nombre del proyecto, aunque por defecto).

    • +1 sí, me acuerdo de perder algo de tiempo en este tema : la asamblea nombre de sistema de archivo de la aplicación de prueba era diferente de su nombre de proyecto 🙂
    • +1 también. El valor predeterminado de la clase o de la unidad nombre de la prueba es válida, pero nunca lo que le han cambiado el nombre por el momento de su publicación. La resultante .dll retendrá el primer nombre de archivo guardadas hasta que la Asamblea de nombre’ es cambiar en las propiedades del proyecto.
    • Cuando los proyectos son unsigned asegúrese también de que el proyecto de aplicación (el que contiene el [assembly: InternalsVisibleTo("MyTests")] amigo de referencia) no contiene [assembly: AssemblyKeyName("")] en su AssemblyInfo.cs archivo.
  2. 12

    Permite romper un poco como muchos de nosotros ha experimentado este leve confusión en el pasado…

    Asamblea Una tiene su clase interna.
    Asamblea B tiene su unidad de pruebas.

    Desea conceder a la parte interna de la asamblea de la visibilidad en la asamblea B.

    Que usted necesita para poner el InternalsVisibleTo asamblea atributo dentro de Una asamblea y el acceso a la subvención a la asamblea B.

    • Sí, eso es lo que está diciendo no está funcionando.
  3. 4

    Usted todavía necesita el proyecto de prueba para hacer referencia a su proyecto principal.

    Esto puede ser fácil pasar por alto y si usted no tiene ninguna prueba existente en el código de este puede aparecer como la InternalsVisibleTo no está funcionando.

  4. 3

    En mi caso me fue de codificación para una Interfaz. Como interfaces sólo puede especificar las propiedades públicas las propiedades internas no estaban presentes en la interfaz.

    Asegúrese de que usted no está haciendo la misma cosa como me fue!

    He cambiado:

    Assert.IsNotNull((exportFileManager)?.ThumbnailFileExporter);

    A:

    Assert.IsNotNull((exportFileManager as ExportFileManager)?.ThumbnailFileExporter);
    • Me llevó una eternidad para encontrar esta respuesta. No puede entender por qué los internos explícitamente declarado implementación de la interfaz no fue reconocida,
    • Implementado explícitamente los métodos de nunca jamás (que es el punto); usted tiene que convertir el objeto a la interfaz con el fin de obtener acceso a esas implementaciones de método.
    • no quieres decir elenco de la interfaz para la clase concreta? Seguro, entiendo por qué sucede, pero mi punto es que es un error fácil de hacer, quizás sin darse cuenta.

Dejar respuesta

Please enter your comment!
Please enter your name here