Eğitim
Modül
TypeScript'ten dış kitaplıklara erişme - Training
TypeScript'ten dış kitaplıklara erişmeyi öğrenin.
Bu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Arkadaş derlemesi, başka bir derlemenin iç (C#) veya Arkadaş (Visual Basic) türlerine ve üyelerine erişebilen bir derlemedir. AssemblyB'yi bir arkadaş derlemesi olarak tanımlamak için AssemblyA'ya bir derleme özniteliği eklerseniz, assemblyB tarafından erişilebilmesi için artık AssemblyA'dakitürleri ve üyeleri genel olarak işaretlemeniz gerekmez. Bu özellikle aşağıdaki senaryolarda kullanışlıdır:
Birim testi sırasında, test kodu ayrı bir derlemede çalıştırıldığında ancak C# veya Friend
Visual Basic'te olarak internal
işaretlenen test edilen derlemedeki üyelere erişim gerektirir.
Bir sınıf kitaplığı geliştirirken ve kitaplığa yapılan eklemeler ayrı derlemelerde yer alır, ancak C# veya Friend
Visual Basic'te olarak internal
işaretlenmiş mevcut derlemelerdeki üyelere erişim gerektirir.
Özniteliğini InternalsVisibleToAttribute , belirli bir derleme için bir veya daha fazla arkadaş derlemesini tanımlamak için kullanabilirsiniz. Aşağıdaki örnek AssemblyA içindeki özniteliğini InternalsVisibleToAttribute kullanır ve derleme AssemblyB'yi bir arkadaş derlemesi olarak belirtir. Bu, AssemblyB derlemesine C# veya Visual Basic'te olarak internal
işaretlenen A Derlemesindeki tüm türlere ve Friend
üyelere erişim verir.
Not
AssemblyA gibi başka bir derlemenin iç türlerine veya iç üyelerine erişecek AssemblyB gibi bir derleme derlerken, -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. Daha fazla bilgi için bkz . OutputAssembly (C#) veya -out (Visual Basic).
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");
}
}
Imports System.Runtime.CompilerServices
<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
Yalnızca arkadaş olarak açıkça belirttiğiniz derlemeler (C#) veya Friend
(Visual Basic) türlerine ve üyelerine erişebilir internal
. Örneğin, AssemblyB, Derleme A ve Derleme C'nin arkadaşıysa AssemblyB'ye başvurur, C Derlemesi'nin A Derlemesindeki (C#) veya Friend
(Visual Basic) türlerine internal
erişimi yoktur.
Derleyici, özniteliğine geçirilen arkadaş derleme adının bazı temel doğrulamasını InternalsVisibleToAttribute gerçekleştirir. Derleme A, AssemblyB'yi bir arkadaş derlemesi olarak bildirirse, doğrulama kuralları aşağıdaki gibidir:
Derleme A güçlü adlandırılmışsa, AssemblyB de tanımlayıcı olarak adlandırılmalıdır. Özniteliğine geçirilen arkadaş derleme adı derleme adından ve AssemblyB'yi imzalamak için kullanılan tanımlayıcı ad anahtarının ortak anahtarından oluşmalıdır.
Özniteliğine InternalsVisibleToAttribute geçirilen arkadaş derleme adı AssemblyB'nin tanımlayıcı adı olamaz. Derleme sürümünü, kültürü, mimariyi veya ortak anahtar belirtecini eklemeyin.
Derleme A tanımlayıcı olarak adlandırılmazsa, arkadaş derleme adı yalnızca derleme adından oluşmalıdır. Daha fazla bilgi için bkz . Nasıl yapılır: İmzasız arkadaş derlemeleri oluşturma.
AssemblyB tanımlayıcı olarak adlandırılmışsa, proje ayarını veya komut satırı /keyfile
derleyici seçeneğini kullanarak AssemblyB için tanımlayıcı ad anahtarını belirtmeniz gerekir. Daha fazla bilgi için bkz . Nasıl yapılır: İmzalı arkadaş derlemeleri oluşturma.
sınıfı StrongNameIdentityPermission , aşağıdaki farklarla türleri paylaşma olanağı da sağlar:
StrongNameIdentityPermission tek bir türe uygulanırken, arkadaş derlemesi bütün derlemeye uygulanır.
Derleme A'da AssemblyB ile paylaşmak istediğiniz yüzlerce tür varsa, bunların tümüne eklemeniz StrongNameIdentityPermission gerekir. Arkadaş derlemesi kullanıyorsanız, arkadaş ilişkisini yalnızca bir kez bildirmeniz gerekir.
kullanıyorsanız StrongNameIdentityPermission, paylaşmak istediğiniz türlerin genel olarak bildirilmesi gerekir. Bir arkadaş derlemesi kullanıyorsanız, paylaşılan türler (C#) veya Friend
(Visual Basic) olarak internal
bildirilir.
Bir derlemenin internal
(C#) veya Friend
(Visual Basic) türlerine ve yöntemlerine bir modül dosyasından (.netmodule uzantısına sahip bir dosya) erişme hakkında bilgi için bkz. ModuleAssemblyName (C#) veya -moduleassemblyname (Visual Basic).
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Eğitim
Modül
TypeScript'ten dış kitaplıklara erişme - Training
TypeScript'ten dış kitaplıklara erişmeyi öğrenin.
Belgeler
Nasıl yapılır: İmzasız arkadaş derlemeleri oluşturma - .NET
Bu makalede, arkadaş derlemelerinin imzasız derlemelerle nasıl kullanılacağı gösterilmektedir. .NET güvenliği hakkında bilgi içerir.
Derleyici Seçenekleri - dil özelliği kuralları - C# reference
Dil özelliği kuralları için C# Derleyici Seçenekleri. Bu seçenekler, derleyicinin belirli dil yapılarını nasıl yorumlayanı denetler.