Ensamblados Friend (Visual Basic)

Actualización: noviembre 2007

Un ensamblado de confianza es un ensamblado que puede tener acceso a los tipos y miembros Friend de otro ensamblado. (Para obtener más información, vea Friend (Visual Basic)). Si identifica un ensamblado como ensamblado de confianza, ya no tiene que marcar los tipos y miembros como públicos para que otros ensamblados tengan acceso a ellos. Esto es especialmente adecuado en los escenarios siguientes:

  • Durante la prueba unitaria, cuando se ejecuta el código de prueba en un ensamblado independiente pero se requiere el acceso a los miembros del ensamblado que se prueba que se marcan como Friend.

  • Al desarrollar una biblioteca de clases y las adiciones a la biblioteca las contienen ensamblados independientes pero se requiere el acceso a los miembros de los ensamblados existentes que se marcan como Friend.

Comentarios

Puede usar el atributo InternalsVisibleToAttribute para identificar uno o más ensamblados de confianza para un ensamblado especificado. Por ejemplo, si incluye el atributo InternalsVisibleToAttribute en el ensamblado A y especifica el ensamblado B como ensamblado de confianza, el ensamblado B tendrá acceso a todos los tipos y miembros del ensamblado A marcados como Friend, como se muestra en el siguiente ejemplo.

Imports System.Runtime.CompilerServices

<Assembly: InternalsVisibleTo("FriendAssembliesB")> 

' Friend class.
Friend Class FriendAssembliesA
    Public Sub Test()
        MsgBox("Friend Assemblies Sample Class")
    End Sub
End Class

' Public class with a Friend method.
Public Class FriendAssembliesClassA
    Friend Sub Test()
        MsgBox("Friend Assemblies Sample Method")
    End Sub
End Class

Sólo los ensamblados que especifique explícitamente como de confianza pueden tener acceso a los tipos y miembros Friend. Por ejemplo, si el ensamblado B es de confianza para el ensamblado A y el ensamblado C hace referencia al ensamblado B, C no tiene acceso a los tipos Friend de A.

El compilador realiza parte de la validación básica del nombre del ensamblado de confianza pasado al atributo InternalsVisibleToAttribute. Si el ensamblado A declara B como ensamblado de confianza, las reglas de validación son las siguientes:

  • Si el ensamblado A tiene un nombre seguro, el ensamblado B también debe tener un nombre seguro. El nombre del ensamblado de confianza que se pasa al atributo debe estar formado por el nombre del ensamblado y la clave pública de la clave de nombre seguro que se utiliza para firmar el ensamblado B.

    El nombre del ensamblado de confianza que se pasa al atributo InternalsVisibleToAttribute no puede tener el nombre seguro del ensamblado B: no incluya la versión del ensamblado, la referencia cultural, la arquitectura ni el token de clave pública.

  • Si el ensamblado A no tiene un nombre seguro, el nombre del ensamblado de confianza debe estar formado sólo por el nombre del ensamblado. Para obtener más información, consulte Cómo: Crear ensamblados de confianza no firmados.

  • Si el ensamblado B tiene un nombre seguro, debe especificar la clave de nombre seguro del ensamblado B utilizando el valor del proyecto o la línea de comandos de la opción del compilador /keyfile. Para obtener más información, consulte Cómo: Crear ensamblados de confianza firmados.

Para obtener información sobre cómo tener acceso a los tipos y métodos Friend de un ensamblado desde un archivo de módulo (un archivo con la extensión .netmodule), vea /moduleassemblyname.

Nota de seguridad:

Hay similitudes entre el atributo InternalsVisibleToAttribute y la clase StrongNameIdentityPermission. La diferencia principal es que StrongNameIdentityPermission puede exigir los permisos de seguridad para ejecutar una sección de código determinada, mientras que el atributo InternalsVisibleToAttribute controla la visibilidad de los miembros y tipos Friend.

Vea también

Tareas

Cómo: Crear ensamblados de confianza no firmados

Cómo: Crear ensamblados de confianza firmados

Conceptos

Ensamblados

Referencia

InternalsVisibleToAttribute

Herramienta Assembly Linker (Al.exe)

/addmodule

Otros recursos

Compilador de Visual Basic