System.Runtime.CompilerServices.InternalsVisibleToAttribute sınıfı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

InternalsVisibleToAttribute özniteliği, normalde yalnızca geçerli derleme içinde görünen türlerin belirtilen bir derlemeye görünür olduğunu belirtir.

Normalde, C# veyaFriendVisual Basic'te kapsamı olan internal türler ve üyeler yalnızca tanımlandığı derlemede görünür. Kapsamı (Protected FriendVisual Basic'te kapsam) olan protected internal türler ve üyeler yalnızca kendi derlemelerinde veya kendi içeren sınıflarından türetilen türlerde görünür. Kapsamı (Private ProtectedVisual Basic'te kapsam) olan private protected türler ve üyeler, içeren sınıfta veya geçerli derlemedeki kendi içeren sınıfından türetilen türlerde görünür

InternalsVisibleToAttribute özniteliği, bu türlerin ve üyelerin, arkadaş derlemesi olarak bilinen belirtilen derlemedeki türler için de görünür olmasını sağlar. Bu yalnızca (Friend Visual Basic'te), protected internal(Protected Friend Visual Basic'te) ve private protected (Private Protected Visual Basic'te) üyeler için internal geçerlidir, ancak bunlar için geçerli değildirprivate.

Not

(Private Protected Visual Basic'te) üyeler söz konusu olduğunda private protected , InternalsVisibleToAttribute özniteliği erişilebilirliği yalnızca üyenin içeren sınıfından türetilen türlere genişletir.

özniteliği derleme düzeyinde uygulanır. Bu, bir kaynak kod dosyasının başına veya bir Visual Studio projesindeki AssemblyInfo dosyasına dahil edilebileceği anlamına gelir. özniteliğini kullanarak, geçerli derlemenin iç türlerine ve üyelerine erişebilen tek bir arkadaş derlemesi belirtebilirsiniz. Birden çok arkadaş derlemesi iki şekilde tanımlayabilirsiniz. Bunlar, aşağıdaki örnekte gösterildiği gibi tek tek derleme düzeyi öznitelikler olarak görünebilir.

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

Ayrıca, aşağıdaki örnekte gösterildiği gibi ayrı InternalsVisibleToAttribute etiketlerle ancak tek assembly bir anahtar sözcükle de görünebilirler.

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

Arkadaş derlemesi oluşturucu tarafından InternalsVisibleToAttribute tanımlanır. Hem geçerli derleme hem de arkadaş derlemesinin imzasız olması veya her iki derlemenin de tanımlayıcı bir adla imzalanması gerekir.

Her iki derleme de imzasızsa, assemblyName bağımsız değişken bir dizin yolu veya dosya adı uzantısı olmadan belirtilen arkadaş derlemesinin adından oluşur.

Her iki derleme de tanımlayıcı bir adla imzalanırsa, oluşturucunun InternalsVisibleToAttribute bağımsız değişkeni dizin yolu veya dosya adı uzantısı olmadan derlemenin adından ve ortak anahtar belirtecinin tamamıyla (ortak anahtar belirteciyle değil) oluşmalıdır. Tanımlayıcı adlı derlemenin tam ortak anahtarını almak için bu makalenin devamında yer alan Tam ortak anahtarı alma bölümüne bakın. Tanımlayıcı adlandırılmış derlemelerle kullanma InternalsVisibleToAttribute hakkında daha fazla bilgi için oluşturucuya InternalsVisibleToAttribute bakın.

Bağımsız değişkene CultureInfo, Versionveya ProcessorArchitecture alanının değerlerini eklemeyin; Visual Basic, C# ve C++ derleyicileri bunu bir derleyici hatası olarak değerlendirir. Bunu hata olarak işlemeyen bir derleyici kullanırsanız (IL Assembler (ILAsm.exe) gibi) ve derlemeler tanımlayıcı adlandırılmışsa, belirtilen arkadaş derleme özniteliğini içeren InternalsVisibleToAttribute derlemeye ilk kez eriştiğinde bir MethodAccessException özel durum oluşturulur.

Bu özniteliği kullanma hakkında daha fazla bilgi için bkz . Arkadaş derlemeleri ve C++ arkadaş derlemeleri.

Tam ortak anahtarı alma

Tanımlayıcı adlı bir anahtar (.snk) dosyasından tam ortak anahtarı almak için Tanımlayıcı Ad Aracı'nı (Sn.exe) kullanabilirsiniz. Bunu yapmak için aşağıdaki adımları gerçekleştirin:

  1. Ortak anahtarı tanımlayıcı adlı anahtar dosyasından ayrı bir dosyaya ayıklayın:

    Sn -p <snk_file> <outfile>

  2. Konsolda tam ortak anahtarı görüntüleyin:

    Sn -tp <outfile>

  3. Tam ortak anahtar değerini kopyalayıp kaynak kodunuz içine yapıştırın.

Arkadaş derlemesini C ile derleme#

Arkadaş derlemesini derlemek için C# derleyicisini kullanırsanız, /out derleyici seçeneğini kullanarak çıkış dosyasının adını (.exe veya .dll) açıkça belirtmeniz gerekir. Derleyici, dış başvurulara bağlandığı sırada oluşturduğu derlemenin adını henüz oluşturmadığından bu gereklidir. Visual Basic derleyicisi için /out derleyicisi seçeneği isteğe bağlıdır ve F# derleyicisi ile arkadaş derlemeleri derlenirken karşılık gelen -out veya -o derleyici seçeneği kullanılmamalıdır.

Arkadaş derlemesini C++ ile derleme

C++'ta, özniteliği tarafından etkinleştirilen iç üyeleri bir arkadaş derlemesi InternalsVisibleToAttribute için erişilebilir hale getirmek için C++ yönergesinde özniteliğini as_friend kullanmanız gerekir. Daha fazla bilgi için bkz . Arkadaş Derlemeleri (C++).