Arkadaş derlemeler (C# ve Visual Basic)
A Arkadaş derlemesi başka bir derlemenin erişebileceği bir derlemenin içinde arkadaş (Visual Basic) veya iç (C#) türleri ve üyeleri. Derleme bir arkadaş derlemesi olarak tanımlamak, artık türleri ve üyeleri için bunları sırayla genel olarak diğer derlemeler tarafından erişilecek işareti yok. Bu özellikle aşağıdaki senaryolarda kullanışlıdır:
Test kod çalıştırıldığında birim sınaması sırasında ayrı bir derleme olarak işaretlenen sınanmakta olan derleme üyelerine erişim ancak gerektirir. Friend (Visual Basic) veya internal (C#).
Ne zaman bir sýnýf kitaplýðý geliştirmektedir ve Kütüphane yapılması ayrı derlemelerde bulunan ancak olarak işaretlenen varolan derlemeler üyelerine erişim gerektiren Friend (Visual Basic) veya internal (C#).
Notlar
Kullanabileceğiniz InternalsVisibleToAttribute bir veya daha fazla arkadaş derlemeler için verilen derleme tanımlamak için öznitelik. Aşağıdaki örnek InternalsVisibleToAttribute a derleme özniteliği ve derleme belirtir AssemblyB Arkadaş derlemesi olarak. Bu derleme verir AssemblyB erişmek için tüm türleri ve Üyeler'de bir olarak işaretlenen montaja Friend (Visual Basic) veya internal (C#).
Not
Bir derlemenin derleme ne zaman (derleme AssemblyB) iç türleri ya da başka bir derleme iç üyeleri erişebilir (derleme a), çıktı dosyasının (.exe veya .dll) adını kullanarak açıkça belirtmelisiniz /out derleyici seçeneği.Bu gereklidir, çünkü derleyici dış başvurular bağlama zaman oluşturma derleme adı henüz oluşturmamıştır.Daha fazla bilgi için bkz: /out (C#) ve / 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");
}
}
Arkadaş erişebilir, açıkça belirtmek derleme Friend (Visual Basic) veya internal (C#) türleri ve üyeleri. Derleme b derleme a ve c derleme başvuruları derleme b arkadaş ise, örneğin, c erişimi yok Friend (Visual Basic) veya internal a. türleriyle (C#)
Derleyici geçirilen arkadaş derleme adının bazı temel doğrulama gerçekleştirir InternalsVisibleToAttribute özniteliği. Derleme a bildirir b bir arkadaş derlemesi doğrulama kuralları aşağıdaki gibidir:
Derleme a adlı derleme güçlü olduğunu b de sert adlandırılmalıdır. Derleme adı ve kesin ad anahtarının derleme imzalamak için kullanılan ortak anahtar özniteliğine geçirilen arkadaş derleme adı oluşmalı b.
İçin geçirilen arkadaş derleme adı InternalsVisibleToAttribute derlemenin kesin ad özniteliği olamaz b: derleme sürüm, kültür, mimari veya ortak anahtar belirteci eklemeyin.
Derleme a olarak adlandırılan arkadaş derleme adı yalnızca derleme adı oluşması güçlü değildir. Daha fazla bilgi için bkz. Nasıl yapılır: imzasız arkadaş derlemeler (C# ve Visual Basic) oluşturma.
Derleme b olarak adlandırılan derlemenin kesin ad anahtar belirtmeniz gerekir güçlü olduğunu b proje ayarı veya komut satırı kullanarak /keyfile derleyici seçeneği. Daha fazla bilgi için bkz. Nasıl yapılır: imzalı arkadaş derlemeler (C# ve Visual Basic) oluşturma.
StrongNameIdentityPermission Sınıf türleri aşağıdaki farklılıkları ile paylaşma olanağı da sağlar:
StrongNameIdentityPermissionTüm derleme Arkadaş derlemesi geçerli olmakla birlikte tek bir türü için geçerlidir.
Birleştirme türleri yüzlerce ise a derlemesi ile paylaşmak istediğiniz b, eklemek zorunda StrongNameIdentityPermission tüm bunları. Arkadaş derlemesi kullanırsanız, arkadaş ilişkisi bir kez bildirmek gerekir.
Kullanırsanız, StrongNameIdentityPermission, paylaşmak istediğiniz türü genel olarak bildirilmesi gerekir. Arkadaş derlemesi kullanıyorsanız, paylaşılan türleri olarak bildirilir Friend (Visual Basic) veya internal (C#).
Bir derlemenin erişme hakkında bilgi için Friend (Visual Basic) veya internal (C#) türleri ve yöntemleri bir modül dosyası (bir dosya. netmodule uzantılı bir dosya) varsa, bkz: /moduleassemblyname (Visual Basic) ve /moduleassemblyname (C#).
Ayrıca bkz.
Görevler
Nasıl yapılır: imzasız arkadaş derlemeler (C# ve Visual Basic) oluşturma
Nasıl yapılır: imzalı arkadaş derlemeler (C# ve Visual Basic) oluşturma
Başvuru
Kavramlar
Derlemeler ve genel birleştirme önbelleğine (C# ve Visual Basic)