System.Runtime.CompilerServices.InternalsVisibleToAttribute – třída

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

Atribut InternalsVisibleToAttribute určuje, že typy, které jsou obvykle viditelné pouze v rámci aktuálního sestavení, jsou viditelné pro zadané sestavení.

Obvykle jsou typy a členy s oborem internal v jazyce C# neboFriendobor v jazyce Visual Basic viditelné pouze v sestavení, ve kterém jsou definovány. Typy a členy s oborem protected internal (Protected Friend obor v jazyce Visual Basic) jsou viditelné pouze ve vlastním sestavení nebo v typech odvozených z jejich obsahující třídy. Typy a členy s oborem private protected (Private Protected obor v jazyce Visual Basic) jsou viditelné v obsahující třídě nebo v typech odvozených od jejich obsahující třídy v rámci aktuálního sestavení.

Atribut InternalsVisibleToAttribute tyto typy a členy také zviditelňuje pro typy v zadaném sestavení, které se označuje jako známé sestavení. To platí pouze pro internal členy (Friend v jazyce Visual Basic), protected internal(Protected Friend v jazyce Visual Basic) a private protected (Private Protected v jazyce Visual Basic), ale ne private pro členy.

Poznámka:

V případě private protected členů InternalsVisibleToAttribute jazyka VisualPrivate Protected Basic rozšiřuje atribut přístupnost pouze na typy odvozené od třídy obsahující člen.

Atribut se použije na úrovni sestavení. To znamená, že ho můžete zahrnout na začátku souboru zdrojového kódu nebo ho můžete zahrnout do souboru AssemblyInfo v projektu sady Visual Studio. Pomocí atributu můžete určit jedno přátelské sestavení, které má přístup k interním typům a členům aktuálního sestavení. Více přátelských sestavení můžete definovat dvěma způsoby. Mohou se zobrazit jako jednotlivé atributy na úrovni sestavení, jak je znázorněno v následujícím příkladu.

[assembly:InternalsVisibleTo("Friend1a")]
[assembly:InternalsVisibleTo("Friend1b")]
<assembly:InternalsVisibleTo("Friend1a")>
<assembly:InternalsVisibleTo("Friend1b")>

Mohou se také objevit s samostatnými InternalsVisibleToAttribute značkami, ale jedním assembly klíčovým slovem, jak ukazuje následující příklad.

[assembly:InternalsVisibleTo("Friend2a"), 
          InternalsVisibleTo("Friend2b")]
<Assembly:InternalsVisibleTo("Friend2a"), _
 Assembly:InternalsVisibleTo("Friend2b")>

Přátelská sestavení je identifikována konstruktorem InternalsVisibleToAttribute . Aktuální sestavení i přátelská sestavení musí být nepodepsané nebo obě sestavení musí být podepsána silným názvem.

Pokud jsou obě sestavení bez znaménka, assemblyName argument se skládá z názvu známého sestavení zadaného bez cesty k adresáři nebo přípony názvu souboru.

Pokud jsou obě sestavení podepsána silným názvem, musí argument InternalsVisibleToAttribute konstruktoru obsahovat název sestavení bez jeho cesty k adresáři nebo přípony názvu souboru spolu s úplným veřejným klíčem (a ne jeho token veřejného klíče). Úplný veřejný klíč sestavení se silným názvem získáte v části Získání celého veřejného klíče dále v tomto článku. Další informace o použití InternalsVisibleToAttribute se silnými pojmenovanými sestaveními naleznete v konstruktoru InternalsVisibleToAttribute .

Do argumentu CultureInfonezahrnujte hodnoty pro , Versionnebo ProcessorArchitecture pole; kompilátory jazyka Visual Basic, C# a C++ zachází jako s chybou kompilátoru. Pokud použijete kompilátor, který s ním nezachází jako s chybou (například sestavení IL Assembler (ILAsm.exe)) a sestavení jsou silná, při prvním přístupu k sestavení, které obsahuje InternalsVisibleToAttribute atribut, MethodAccessException vyvolá se výjimka.

Další informace o použití tohoto atributu naleznete v tématu Přátelská sestavení a sestavení C++ přítel.

Získání úplného veřejného klíče

Pomocí nástroje Strong Name (Sn.exe) můžete načíst úplný veřejný klíč ze souboru klíče se silným názvem (.snk). Provedete to takto:

  1. Extrahujte veřejný klíč ze souboru silného klíče do samostatného souboru:

    Sn -p <snk_file> <outfile>

  2. Zobrazení úplného veřejného klíče do konzoly:

    Sn -tp <outfile>

  3. Zkopírujte a vložte úplnou hodnotu veřejného klíče do zdrojového kódu.

Kompilace spřáteliného sestavení pomocí jazyka C#

Pokud použijete kompilátor jazyka C# ke kompilaci přátelského sestavení, je nutné explicitně zadat název výstupního souboru (.exe nebo .dll) pomocí možnosti /out kompilátoru. To je povinné, protože kompilátor ještě negeneroval název sestavení, které sestavuje v době, kdy je vázán na externí odkazy. Možnost /out kompilátoru je volitelná pro kompilátor jazyka Visual Basic a odpovídající možnost -out nebo -o kompilátoru by se neměla použít při kompilaci přátelských sestavení pomocí kompilátoru jazyka F#.

Kompilace spřáteliného sestavení pomocí jazyka C++

V jazyce C++ je nutné použít as_friend atribut v direktivě C++, aby byly interní členy povolené atributem InternalsVisibleToAttribute přístupným pro známé sestavení. Další informace naleznete v tématu Přátelská sestavení (C++).