Aracılığıyla paylaş


İzlenecek yol: Yönetilen derlemeler (C# ve Visual Basic) türlerinden gömme

Yönetilen derleme kesin adlandırılmış tür bilgisinden katıştırırsanız, sürüm Bağımsızlık elde etmek için bir uygulama türleri gevşek halinde birleştirebilir.Diğer bir deyişle, her sürümü için çekirdekler gerek kalmadan birden çok sürümünü yönetilen kitaplık türleri kullanmak programınızın yazılabilir.

Tipi katıştırma Microsoft Office'ten Otomasyon nesneleri kullanan bir uygulama gibi com birlikte çalışabilirlik ile sık sık kullanılır.Microsoft Office'in farklı sürümlerinde farklı bilgisayarlarda çalışmak üzere bir program aynı yapı türü bilgileri katıştırma sağlar.Ancak, tam olarak yönetilen bir çözümü ile gömme türü de kullanabilirsiniz.

Tür bilgileri aşağıdaki özelliklere sahip bir derleme gömülebilir:

  • Derleme en az bir ortak arabirim sunar.

  • Katıştırılmış arabirimleri ile işaretiyle bir ComImport özniteliği ve bir Guid özniteliği (ve benzersiz bir GUID).

  • Derleme ile açıklama ImportedFromTypeLib özniteliği veya PrimaryInteropAssembly özniteliği ve montaj düzeyi Guid özniteliği.(Varsayılan olarak, Visual Basic ve Visual C# proje şablonları montaj düzeyi dahil Guid özniteliği.)

Gömülebilir ortak arabirimlerde belirttikten sonra bu arabirimleri uygulayan çalışma zamanı sınıfları oluşturabilirsiniz.Bir istemci programı daha sonra bu arayüzler tasarým anýnda tür bilgileri ortak arabirimler ve ayarı içeren derleme başvurarak katıştırabilirsiniz Embed Interop Types başvuru özelliği True.Bu komut satırı derleyicisini kullanmak ve derleme kullanarak baþvurmak için eşdeğer /link derleyici seçeneği.İstemci programı bu arayüzler yazılan çalışma zamanı nesnelerinin örneklerini daha sonra yükleyebilirsiniz.Yeni bir çalışma zamanı kesin adlandırılmış derleme sürümünü oluşturursanız, istemci programının güncelleştirilmiş çalışma zamanı derlemeyle çekirdekler yok.Bunun yerine, istemci programı hangi çalışma zamanı derleme sürümünü ortak arabirimler için katıştırılmış tür bilgileri kullanarak, kullanılabilir kullanmaya devam eder.

Tipi katıştırma birincil işlevi, com birlikte çalışılabilirlik montajları türü bilgileri katıştırma desteği olduğundan, türü bilgileri tam olarak yönetilen bir çözümde gömdüğünüzde aşağıdaki sınırlamalar geçerlidir:

  • Yalnızca com birlikte çalışabilirlik belirli öznitelikleri gömülür; diğer özellikleri yok sayılır.

  • Bir tür genel parametrelerini kullanır ve katıştırılmış tür genel parametre türü ise, bu tür bir derleme sınırı boyunca kullanılamaz.Bir tür türeyen bir türden başka bir derlemede tanımlanmış veya başka bir derlemesinden bir yöntemi çağırmak derleme sınırı üzerinden geçmesini örnekler içerebilir.

  • Sabitler gömülü değildir.

  • System.Collections.Generic.Dictionary<TKey, TValue> Sınıfı, bir katıştırılmış tür anahtar olarak desteklemez.Katıştırılmış bir tür anahtar olarak desteklemek için kendi sözlük türü uygulayabilirsiniz.

Bu izlenecek yolda, aşağıdakileri gerçekleştirir:

  • Gömülebilir türü bilgileri içeren ortak bir arabirim olduğu kesin adlandırılmış derleme oluşturun.

  • Ortak bir arabirim uygulayan bir çalışma zamanı kesin adlandırılmış derleme oluşturun.

  • Ortak arabirim türü bilgileri gömer ve çalışma zamanı derlemesinden sınıfının bir örneğini oluşturan bir istemci programı oluşturma.

  • Değiştirebilir ve çalışma zamanı derlemeyi yeniden oluşturun.

  • Yeni çalışma zamanı derleme sürümünü istemci programı derlemeniz gerekmeden kullanıldığını görmek için istemci programını çalıştırın.

[!NOT]

Bilgisayarınızda, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazılarının adı veya konumu farklı gösterilebilir. Bu öğeleri bilgisayarınızdaki Visual Studio sürümü ve kullandığınız ayarlar belirler. Daha fazla bilgi için bkz: Visual Studio ayarları.

Bir arabirim oluşturma

Tür eşdeğerlik arabirim proje oluşturmak için

  1. De Visual Studio, dosyasını menüsünü tıklatıp YeniProje.

  2. İçinde Yeni bir proje iletişim kutusu Proje türleri bölmesi, emin olun Windows seçilir.Seçin Class Library , şablonları bölmesi.İçinde ad kutusuna yazın TypeEquivalenceInterfaceve i Tamam.Yeni bir proje oluşturulur.

  3. İçinde Solution Explorer, Class1.vb veya Class1.cs dosyası sağ tıklatıp yeniden.Dosya yeniden adlandırma ISampleInterface.vb veya ISampleInterface.cs ve enter tuşuna basın.Dosyayı yeniden adlandırmayı da rename sınıfı ISampleInterface.Bu sınıf, ortak arabirim sınıfı temsil eder.

  4. TypeEquivalenceInterface proje sağ tıklatıp özelliklerini.' I derleme sekmesinde Visual Basic veya Build sekmesinde Visual C#.Çıkış yolu geçerli konuma geliştirme bilgisayarınızda ayarlı C:\TypeEquivalenceSample.Bu konum, bir sonraki adımda Bu izlenecek yolda, aynı zamanda kullanılacaktır.

  5. Yine de proje özelliklerini düzenlerken'ı imzalama sekmesi.Seçin işareti derleme seçeneği.İçinde Kesin ad anahtar dosyası seçin tıklatın <... Yeni >.İçinde anahtar dosya adı kutusuna yazın key.snk.Clear Benim anahtar dosyasını parolayla koru onay kutusu.Tamam düğmesini tıklatın.

  6. ISampleInterface.vb veya ISampleInterface.cs dosyasını açın.ISampleInterface arabirimi oluşturmak için ISampleInterface sınıfı dosyasına aşağıdaki kodu ekleyin.

    Imports System.Runtime.InteropServices
    
    <ComImport()>
    <Guid("8DA56996-A151-4136-B474-32784559F6DF")>
    Public Interface ISampleInterface
        Sub GetUserInput()
        ReadOnly Property UserInput As String
    
    
    ...
    
    
    End Interface
    
    using System;
    using System.Runtime.InteropServices;
    
    namespace TypeEquivalenceInterface
    {
        [ComImport]
        [Guid("8DA56996-A151-4136-B474-32784559F6DF")]
        public interface ISampleInterface
        {
            void GetUserInput();
            string UserInput { get; }
    
    
    ...
    
    
        }
    }
    
  7. Üzerinde araçları menüsünde,'ı Create Guid.İçinde Create GUID iletişim kutusunu tıklatın Kayıt defteri biçimikopya.' I Çıkış.

  8. De Guid özniteliği, örnek GUID silme ve kopyalama GUID yapıştırın Create GUID iletişim kutusu.Küme ayraçları ({}) kopyalanan GUID değerinden çıkarın.

  9. De Visual Basic, Proje menüsünde,'ı Show All Files.Kullanıyorsanız, bu adımı atla Visual C#.

  10. İçinde Solution Explorer'da, genişletme My proje kullanıyorsanız, klasör Visual Basic.Genişletme özelliklerini kullanıyorsanız, klasör Visual C#.AssemblyInfo.vb ya da n AssemblyInfo.cs dosyasını çift tıklatın.Aşağıdaki öznitelik dosyasına ekleyin.

    <Assembly: ImportedFromTypeLib("")> 
    
    [assembly: ImportedFromTypeLib("")]
    

    Dosyayı kaydedin.

  11. Projeyi kaydedin.

  12. TypeEquivalenceInterface proje sağ tıklatıp Yapı.Sınıf kitaplığı .dll dosyası derlenmiş ve belirtilen yapı çıkış yolu (örneğin, C:\TypeEquivalenceSample) kaydedilir.

Çalışma zamanı sınıfını oluşturma

Tür eşdeğerlik çalışma zamanı proje oluşturmak için

  1. De Visual Studio, dosyasını menüsünü tıklatıp YeniProje.

  2. İçinde Yeni bir proje iletişim kutusu Proje türleri bölmesi, emin olun Windows seçilir.Seçin Class Library , şablonları bölmesi.İçinde ad kutusuna yazın TypeEquivalenceRuntimeve i Tamam.Yeni bir proje oluşturulur.

  3. İçinde Solution Explorer, Class1.vb veya Class1.cs dosyası sağ tıklatıp yeniden.Dosya yeniden adlandırma SampleClass.vb veya SampleClass.cs ve enter tuşuna basın.Dosyayı yeniden adlandırmayı de adlandırır sınıfı SampleClass.Bu sınıf gerçekleştireceksiniz ISampleInterface arabirimi.

  4. TypeEquivalenceRuntime proje sağ tıklatıp özelliklerini.' I derleme sekmesinde Visual Basic veya Build sekmesinde Visual C#.Çıkış yolu, kullandığınız TypeEquivalenceInterface projesinde, örneğin, aynı konuma ayarlamak C:\TypeEquivalenceSample.

  5. Yine de proje özelliklerini düzenlerken'ı imzalama sekmesi.Seçin işareti derleme seçeneği.İçinde Kesin ad anahtar dosyası seçin tıklatın <... Yeni >.İçinde anahtar dosya adı kutusuna yazın key.snk.Clear Benim anahtar dosyasını parolayla koru onay kutusu.Tamam düğmesini tıklatın.

  6. TypeEquivalenceRuntime proje sağ tıklatıp Add Reference.' I göz sekmesini ve çıkış yolu klasörüne göz atın.TypeEquivalenceInterface.dll dosyasını tıklatıp Tamam.

  7. De Visual Basic, Proje menüsünde,'ı Show All Files.Kullanıyorsanız, bu adımı atla Visual C#.

  8. İçinde Solution Explorer'da, genişletme başvuruları klasörü.TypeEquivalenceInterface referans'ı seçin.TypeEquivalenceInterface başvurusu için Properties penceresinde Belirli bir sürümü özelliğine yanlış.

  9. SampleClass sınıfı oluşturmak için SampleClass sınıfı dosyasına aşağıdaki kodu ekleyin.

    Imports TypeEquivalenceInterface
    
    Public Class SampleClass
        Implements ISampleInterface
    
        Private p_UserInput As String
        Public ReadOnly Property UserInput() As String Implements ISampleInterface.UserInput
            Get
                Return p_UserInput
            End Get
        End Property
    
        Public Sub GetUserInput() Implements ISampleInterface.GetUserInput
            Console.WriteLine("Please enter a value:")
            p_UserInput = Console.ReadLine()
        End Sub
    
    
    ...
    
    
    End Class
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using TypeEquivalenceInterface;
    
    namespace TypeEquivalenceRuntime
    {
        public class SampleClass : ISampleInterface
        {
            private string p_UserInput;
            public string UserInput { get { return p_UserInput; } }
    
            public void GetUserInput()
            {
                Console.WriteLine("Please enter a value:");
                p_UserInput = Console.ReadLine();
            }
    
    
    ...
    
    
        }
    }
    
  10. Projeyi kaydedin.

  11. TypeEquivalenceRuntime proje sağ tıklatıp Yapı.Sınıf kitaplığı .dll dosyası derlenmiş ve belirtilen yapı çıkış yolu (örneğin, C:\TypeEquivalenceSample) kaydedilir.

Bir istemci proje oluşturma

Tür eşdeğerlik istemci proje oluşturmak için

  1. De Visual Studio, dosyasını menüsünü tıklatıp YeniProje.

  2. İçinde Yeni bir proje iletişim kutusu Proje türleri bölmesi, emin olun Windows seçilir.Seçin Console Application , şablonları bölmesi.İçinde ad kutusuna yazın TypeEquivalenceClientve i Tamam.Yeni bir proje oluşturulur.

  3. TypeEquivalenceClient proje sağ tıklatıp özelliklerini.' I derleme sekmesinde Visual Basic veya Build sekmesinde Visual C#.Çıkış yolu, kullandığınız TypeEquivalenceInterface projesinde, örneğin, aynı konuma ayarlamak C:\TypeEquivalenceSample.

  4. TypeEquivalenceClient proje sağ tıklatıp Add Reference.' I göz sekmesini ve çıkış yolu klasörüne göz atın.TypeEquivalenceInterface.dll dosyasını (TypeEquivalenceRuntime.dll değil) tıklatıp Tamam.

  5. De Visual Basic, Proje menüsünde,'ı Show All Files.Kullanıyorsanız, bu adımı atla Visual C#.

  6. İçinde Solution Explorer'da, genişletme başvuruları klasörü.TypeEquivalenceInterface referans'ı seçin.TypeEquivalenceInterface başvurusu için Properties penceresinde Gömme Interop türleri özelliğine doğru.

  7. Aşağıdaki kodu Module1.vb dosyasında veya Program.cs istemci programı oluşturmak için dosyayı ekleyin.

    Imports TypeEquivalenceInterface
    Imports System.Reflection
    
    Module Module1
    
        Sub Main()
            Dim sampleAssembly = Assembly.Load("TypeEquivalenceRuntime")
            Dim sampleClass As ISampleInterface = CType( _
                sampleAssembly.CreateInstance("TypeEquivalenceRuntime.SampleClass"), ISampleInterface)
            sampleClass.GetUserInput()
            Console.WriteLine(sampleClass.UserInput)
            Console.WriteLine(sampleAssembly.GetName().Version)
            Console.ReadLine()
        End Sub
    
    End Module
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using TypeEquivalenceInterface;
    using System.Reflection;
    
    namespace TypeEquivalenceClient
    {
        class Program
        {
            static void Main(string[] args)
            {
                Assembly sampleAssembly = Assembly.Load("TypeEquivalenceRuntime");
                ISampleInterface sampleClass = 
                    (ISampleInterface)sampleAssembly.CreateInstance("TypeEquivalenceRuntime.SampleClass");
                sampleClass.GetUserInput();
                Console.WriteLine(sampleClass.UserInput);
                Console.WriteLine(sampleAssembly.GetName().Version.ToString());
                Console.ReadLine();
            }
        }
    }
    
  8. Yapı ve program çalıştırmak için ctrl + F5 tuşlarına basın.

Ara birimini değiştirme

Arabirimi değiştirmek için

  1. De Visual Studio, dosyasını menüsünü tıklatıp açık[NULL]'ı Project/Solution.

  2. İçinde Açık proje iletişim kutusunda, TypeEquivalenceInterface proje sağ tıklatın ve ardından özelliklerini.Uygulama sekmesini tıklatın.Derleme Bilgisi düğmesini tıklatın.Değişiklik Derleme sürümü ve Dosya sürümü değerler 2.0.0.0.

  3. ISampleInterface.vb veya ISampleInterface.cs dosyasını açın.ISampleInterface arabirimi aşağıdaki kod satırını ekleyin.

    Function GetDate() As Date
    
    DateTime GetDate();
    

    Dosyayı kaydedin.

  4. Projeyi kaydedin.

  5. TypeEquivalenceInterface proje sağ tıklatıp Yapı.Sınıf kitaplığı .dll dosyasının yeni bir sürümünü derlenmiş ve belirtilen yapı çıkış yolu (örneğin, C:\TypeEquivalenceSample) kaydedilir.

Çalışma zamanı sınıfını değiştirme

Çalışma zamanı sınıfını değiştirmek için

  1. De Visual Studio, dosyasını menüsünü tıklatıp açık[NULL]'ı Project/Solution.

  2. İçinde Açık proje iletişim kutusunda, TypeEquivalenceRuntime proje sağ tıklatıp özelliklerini.Uygulama sekmesini tıklatın.Derleme Bilgisi düğmesini tıklatın.Değişiklik Derleme sürümü ve Dosya sürümü değerler 2.0.0.0.

  3. SampleClass.vb veya SampleClass.cs dosyasını açın.SampleClass sınıfı aşağıdaki kod satırlarını ekleyin.

    Public Function GetDate() As DateTime Implements ISampleInterface.GetDate
        Return Now
    End Function
    
    public DateTime GetDate()
    {
        return DateTime.Now;
    }
    

    Dosyayı kaydedin.

  4. Projeyi kaydedin.

  5. TypeEquivalenceRuntime proje sağ tıklatıp Yapı.Sınıf kitaplığı .dll dosyasının güncelleştirilmiş sürümünü derlenmiş ve önceden belirtilen yapı çıkış yolu (örneğin, C:\TypeEquivalenceSample) kaydedilir.

  6. Dosya Gezgini'nde çıkış yolu klasörünü (örneğin, C:\TypeEquivalenceSample) açın.Programı çalıştırmak için TypeEquivalenceClient.exe çift tıklatın.Program yeni sürümü TypeEquivalenceRuntime derleme, çekirdekler kalmadan yansıtır.

Ayrıca bkz.

Başvuru

/Link (Visual Basic)

Visual C++ Derleyici Seçenekleri

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

Visual Basic programlama Kılavuzu

Derlemeler ile programlama