Sdílet prostřednictvím


Sestavení přítele (C# a Visual Basic)

A sestavení přítele je sestavení přístup jiného sestavení přítele (Visual Basic) nebo vnitřní typy (C#) a členy.Pokud identifikovat jako přítele sestavení sestavení, máte již označení typů a členy jako veřejné, aby je přístupný ostatních sestaveních.To je zvláště vhodné v následujících scénářích:

  • Během testování, při spuštění testovací kód v samostatných sestavení ale vyžaduje přístup k sestavení testovány, které jsou označeny jako členové Friend (Visual Basic) nebo internal (C#).

  • Když vyvíjíte knihovna tříd a dodatky ke knihovně jsou obsaženy v samostatném sestavení, ale vyžadují přístup pro členy v existující sestavení, které jsou označeny jako Friend (Visual Basic) nebo internal (C#).

Poznámky

Můžete použít InternalsVisibleToAttribute atributu určit jedno nebo více sestavení přítele v daném sestavení.V následujícím příkladu InternalsVisibleToAttribute v sestavení a atribut a určuje sestavení AssemblyB jako přítele sestavení.To umožňuje sestavení AssemblyB přístup do všech typů a členy v sestavení, které jsou označeny jako Friend (Visual Basic) nebo internal (C#).

[!POZNÁMKA]

Při sestavování sestavení (sestavení AssemblyB), bude přístup k interní typy nebo vnitřní členy jiného sestavení (sestavení a), je nutné explicitně zadat název výstupního souboru (EXE nebo DLL) pomocí /out volba kompilátoru.To není nutná, protože kompilátor není dosud generoval název sestavení, které vytváří v době, kdy je vazba na externí odkazy.Další informace naleznete v tématu /out (C#) a / out (Visual Basic).

Imports System.Runtime.CompilerServices
Imports System
<Assembly: InternalsVisibleTo("AssemblyB")> 

' Friend class.
Friend Class FriendClass
    Public Sub Test()
        Console.WriteLine("Sample Class")
    End Sub
End Class

' Public class with a Friend method.
Public Class ClassWithFriendMethod
    Friend Sub Test()
        Console.WriteLine("Sample Method")
    End Sub
End Class
using System.Runtime.CompilerServices;
using System;

[assembly: InternalsVisibleTo("AssemblyB")]

// The class is internal by default.
class FriendClass
{
    public void Test()
    {
        Console.WriteLine("Sample Class");
    }
}

// Public class that has an internal method.
public class ClassWithFriendMethod
{
    internal void Test()
    {
        Console.WriteLine("Sample Method");
    }

}

Pouze sestavení, které výslovně zadáte jako přátelé přístup Friend (Visual Basic) nebo internal typy (C#) a členy.Například je-li sestavení b přítele a sestavení a sestavení odkazy sestavení C, B, C nemá přístup k Friend (Visual Basic) nebo internal (C#) typy A.

Kompilátor provádí základní ověření název sestavení přítele předány InternalsVisibleToAttribute atributu.Pokud shromáždění a prohlašuje b jako přítele sestavení, ověřovací pravidla jsou následující:

  • Pokud shromáždění a je silně pojmenované sestavení b musí také mít silné názvy.Název sestavení přítele, který je předán do atributu musí obsahovat název sestavení a veřejného klíče silného názvu klíče, který je použit k podepsání sestavení b.

    Název sestavení přítele, který je předán InternalsVisibleToAttribute atribut nemůže být silný název sestavení b: neobsahují verzi sestavení, kultura, architektura nebo token veřejného klíče.

  • Pokud shromáždění a není silný název, název sestavení přítele by měl obsahovat pouze název sestavení.Další informace naleznete v tématu Jak: vytvoření nepodepsané přítele sestavení (C# a Visual Basic).

  • Pokud shromáždění b je silný název, je nutné zadat klíč silného názvu pro sestavení b pomocí nastavení projektu nebo příkazového řádku /keyfile volba kompilátoru.Další informace naleznete v tématu Jak: Vytvoření podepsaného přítele sestavení (C# a Visual Basic).

StrongNameIdentityPermission Třídy také umožňuje sdílet typy s následující rozdíly:

  • StrongNameIdentityPermissionplatí pro jednotlivé typu, při sestavení přítele platí celá sestava.

  • Pokud jsou stovky typů v sestavení a , kterou chcete sdílet s sestavení b, je nutné přidat StrongNameIdentityPermission na všechny.Pokud používáte sestavení přítele, stačí pouze jednou deklarovat vztah přítele.

  • Používáte-li StrongNameIdentityPermission, typy, které chcete sdílet nutné deklarovat jako public.Pokud používáte sestavení přítele, sdílené typy jsou deklarovány jako Friend (Visual Basic) nebo internal (C#).

Informace o získání přístupu sestavení Friend (Visual Basic) nebo internal druhů (C#) a metody ze souboru modulu (soubor s.přípona netmodule), viz /moduleassemblyname (Visual Basic) a /moduleassemblyname (C#).

Viz také

Úkoly

Jak: vytvoření nepodepsané přítele sestavení (C# a Visual Basic)

Jak: Vytvoření podepsaného přítele sestavení (C# a Visual Basic)

Referenční dokumentace

InternalsVisibleToAttribute

StrongNameIdentityPermission

Koncepty

Sestavení a globální mezipaměti sestavení (C# a Visual Basic)

Příručka programování C#

Další zdroje

Příručka programování v jazyce Visual Basic