Aracılığıyla paylaş


Nasıl yapılır: imzasız arkadaş derlemeler (C# ve Visual Basic) oluşturma

Bu örnek, imzasız montajları ile arkadaş kullanabileceksiniz gösterilmiştir.

Visual Studio derleme ve arkadaş derleme oluşturmak için

  1. Visual Studio Komut istemini açın.

  2. Adlı bir Visual Basic ya da C# dosyası oluşturmak friend_signed_A. , aşağıdaki kod içerir.Kod kullanan InternalsVisibleToAttribute friend_signed_B Arkadaş derlemesi olarak bildirmek için öznitelik.

    ' friend_unsigned_A.vb
    ' Compile with: 
    ' Vbc /target:library friend_unsigned_A.vb
    Imports System.Runtime.CompilerServices
    Imports System
    
    <Assembly: InternalsVisibleTo("friend_unsigned_B")> 
    
    ' Friend type.
    Friend Class Class1
        Public Sub Test()
            Console.WriteLine("Class1.Test")
        End Sub
    End Class
    
    ' Public type with Friend member.
    Public Class Class2
        Friend Sub Test()
            Console.WriteLine("Class2.Test")
        End Sub
    End Class
    
    // friend_unsigned_A.cs
    // Compile with: 
    // csc /target:library friend_unsigned_A.cs
    using System.Runtime.CompilerServices;
    using System;
    
    [assembly: InternalsVisibleTo("friend_unsigned_B")]
    
    // Type is internal by default.
    class Class1
    {
        public void Test()
        {
            Console.WriteLine("Class1.Test");
        }
    }
    
    // Public type with internal member.
    public class Class2
    {
        internal void Test()
        {
            Console.WriteLine("Class2.Test");
        }
    }
    
  3. Derlemek ve friend_signed_A, aşağıdaki komutu kullanarak oturum açın.

    Vbc /target:library friend_unsigned_A.vb
    
    csc /target:library friend_unsigned_A.cs
    
  4. Adlı bir Visual Basic ya da C# dosyası oluşturmak friend_unsigned_B , aşağıdaki kod içerir.Friend_unsigned_A friend_unsigned_B Arkadaş derlemesi belirlendiğinden, friend_unsigned_B kodda erişebilirsiniz Friend (Visual Basic) veya internal (C#) türleri ve friend_unsigned_A üyelerinden.

    ' friend_unsigned_B.vb
    ' Compile with: 
    ' Vbc /r:friend_unsigned_A.dll friend_unsigned_B.vb
    Module Module1
        Sub Main()
            ' Access a Friend type.
            Dim inst1 As New Class1()
            inst1.Test()
    
            Dim inst2 As New Class2()
            ' Access a Friend member of a public type.
            inst2.Test()
    
            System.Console.ReadLine()
        End Sub
    End Module
    
    // friend_unsigned_B.cs
    // Compile with: 
    // csc /r:friend_unsigned_A.dll /out:friend_unsigned_B.exe friend_unsigned_B.cs
    public class Program
    {
        static void Main()
        {
            // Access an internal type.
            Class1 inst1 = new Class1();
            inst1.Test();
    
            Class2 inst2 = new Class2();
            // Access an internal member of a public type.
            inst2.Test();
    
            System.Console.ReadLine();
        }
    }
    
  5. Friend_signed_B, aşağıdaki komutu kullanarak derleyin.

    Vbc /r:friend_unsigned_A.dll friend_unsigned_B.vb
    
    csc /r:friend_unsigned_A.dll /out:friend_unsigned_B.exe friend_unsigned_B.cs
    

    Derleyici tarafından oluşturulan derlemenin adı için geçirilen arkadaş derleme adı eşleşmelidir InternalsVisibleToAttribute özniteliği.Kullanarak derleme açıkça ayarlanmış /out derleyici seçeneği.

    C# [NULL]'ta, açıkça çıktı derleme (.exe veya .dll) adını kullanarak belirtmelisiniz /out derleyici seçeneği.Visual Basic'te, bu isteğe bağlıdır.Daha fazla bilgi için, bkz. / out (Visual Basic) ve /out (C# Derleyici Seçenekleri).

  6. Friend_signed_B.exe dosyasını çalıştırın.

    Program iki dizeleri yazdırır: "Class1.Test" ve "Class2.Test".

Güvenlik

Arasında benzerlikler vardır InternalsVisibleToAttribute özniteliği ve StrongNameIdentityPermission sınıfı.Temel fark olan StrongNameIdentityPermission kodu, belirli bir bölümünü çalıştırmak için güvenlik izinleri ise talep InternalsVisibleToAttribute özniteliği görünürlüğünü kontrol Friend (Visual Basic) veya internal (C#) türleri ve üyeleri.

Ayrıca bkz.

Görevler

Nasıl yapılır: imzalı arkadaş derlemeler (C# ve Visual Basic) oluşturma

Başvuru

InternalsVisibleToAttribute

Kavramlar

Derlemeler ve genel birleştirme önbelleğine (C# ve Visual Basic)

Arkadaş derlemeler (C# ve Visual Basic)

C# Programlama Kılavuzu

Diğer Kaynaklar

Visual Basic programlama Kılavuzu