İngilizce dilinde oku

Aracılığıyla paylaş


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

Bu örnek, güçlü adlara sahip Derlemelerle arkadaş kullanabileceksiniz gösterilmiştir. Her iki derleme kesin adlı gerekir. Bu örnekte her iki derleme aynı tuşlarını kullanıyor olsa da, iki derlemeler için farklı anahtarlar kullanabilirsiniz.

Visual Studio ile imzalanmış bir derleme ve arkadaş derlemesi oluşturmak için

  1. Visual Studio Komut istemini açın.

  2. Aşağıdaki komut dizisini güçlü adı aracıyla bir keyfile üretmek için ve ortak anahtarını görüntülemek için kullanın. Daha fazla bilgi için bkz. Sn.exe (güçlü adı aracı).

    1. Bu örnek için kesin ad anahtar oluşturmak ve FriendAssemblies.snk dosyasında saklar:

      sn -k FriendAssemblies.snk

    2. FriendAssemblies.snk ortak anahtar ayıklamak ve FriendAssemblies.publickey yerleştirin:

      sn -p FriendAssemblies.snk FriendAssemblies.publickey

    3. FriendAssemblies.publickey dosyasında depolanan ortak anahtarla görüntüle:

      sn - tp FriendAssemblies.publickey

  3. 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.

    Çalıştırılan her zaman güçlü adı araç yeni bir ortak anahtar oluşturur. Bu nedenle, aşağıdaki örnekte gösterildiği gibi yalnızca üretilen, ortak anahtar ile ortak anahtarı aşağıdaki kodda değiştirmelisiniz.

    ' friend_signed_A.vb
    ' Compile with: 
    ' Vbc /target:library /keyfile:FriendAssemblies.snk friend_signed_A.vb
    Imports System.Runtime.CompilerServices
    
    <Assembly: InternalsVisibleTo("friend_signed_B, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e3aedce99b7e10823920206f8e46cd5558b4ec7345bd1a5b201ffe71660625dcb8f9a08687d881c8f65a0dcf042f81475d2e88f3e3e273c8311ee40f952db306c02fbfc5d8bc6ee1e924e6ec8fe8c01932e0648a0d3e5695134af3bb7fab370d3012d083fa6b83179dd3d031053f72fc1f7da8459140b0af5afc4d2804deccb6")> 
    Public Class Class1
        Public Sub Test()
            System.Console.WriteLine("Class1.Test")
            System.Console.ReadLine()
        End Sub
    End Class
    
  4. Derlemek ve friend_signed_A, aşağıdaki komutu kullanarak oturum açın.

    Vbc /target:library /keyfile:FriendAssemblies.snk friend_signed_A.vb
    
  5. Adlı bir Visual Basic ya da C# dosyası oluşturmak friend_signed_B ve aşağıdaki kodu içerir. Friend_signed_A friend_signed_B Arkadaş derlemesi belirlendiğinden, friend_signed_B kodda erişebilirsiniz Friend (Visual Basic) veya internal (C#) türleri ve friend_signed_A üyelerinden. Aşağıdaki kod dosyası içerir.

    ' friend_signed_B.vb
    ' Compile with: 
    ' Vbc /keyfile:FriendAssemblies.snk /r:friend_signed_A.dll friend_signed_B.vb
    Module Sample
        Public Sub Main()
            Dim inst As New Class1
            inst.Test()
        End Sub
    End Module
    
  6. Derlemek ve friend_signed_B, aşağıdaki komutu kullanarak oturum açın.

    Vbc /keyfile:FriendAssemblies.snk /r:friend_signed_A.dll friend_signed_B.vb
    

    Derleyici tarafından oluşturulan derlemenin adı geçirilen Arkadaş derlemesi adıyla eşleşmesi gerekir 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).

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

    Program, "Class1.Test" dizesi yazdırır.

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: imzasız arkadaş derlemeler (C# ve Visual Basic) oluşturma

Başvuru

InternalsVisibleToAttribute

/keyfile

Sn.exe (güçlü adı aracı)

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

Oluşturma ve kullanma kesin adlandırılmış birleştirmeler

Visual Basic programlama Kılavuzu