İzlenecek yol: Visual Studio’da yönetilen bütünleştirilmiş kodlardan türleri ekleme

Tanımlayıcı adlı yönetilen bir derlemeden tür bilgilerini eklerseniz, sürüm bağımsızlığını elde etmek için bir uygulamada gevşek olarak birkaç tür oluşturabilirsiniz. Diğer bir deyişle, programınız her yeni sürüm için yeniden derlenmesi gerekmeden yönetilen bir kitaplığın herhangi bir sürümündeki türleri kullanmak üzere yazılabilir.

Tür ekleme, genellikle Microsoft Office Otomasyon nesneleri kullanan bir uygulama gibi COM birlikte çalışma ile kullanılır. tür bilgilerinin gömülmesi, farklı bilgisayarlarda farklı Microsoft Office sürümleriyle çalışmak için aynı programın derlemesini sağlar. Ancak, tam olarak yönetilen çözümlerle tür eklemeyi de kullanabilirsiniz.

Katıştırılabilen ortak arabirimleri belirttikten sonra, bu arabirimleri uygulayan çalışma zamanı sınıfları oluşturursunuz. İstemci programı, genel arabirimleri içeren derlemeye başvurarak ve başvurusunun özelliğini ayarlayarak, tasarım zamanında arabirimlerin tür bilgilerini ekleyebilir Embed Interop Types True . İstemci programı daha sonra bu arabirimler olarak yazılmış çalışma zamanı nesnelerinin örneklerini yükleyebilir. Bu, komut satırı derleyicisini kullanma ve EmbedInteropTypes derleyici seçeneğikullanılarak derlemeye başvurma ile eşdeğerdir.

Güçlü adlandırılmış çalışma zamanı derlemenin yeni bir sürümünü oluşturursanız, istemci programın yeniden derlenmesi gerekmez. İstemci programı, ortak arabirimler için katıştırılmış tür bilgilerini kullanarak çalışma zamanı derlemesinin hangi sürümünün kullanılabilir olduğunu kullanmaya devam eder.

Bu izlenecek yolda şunları yapabilirsiniz:

  1. Katıştırılabilen tür bilgilerini içeren bir ortak arabirim ile tanımlayıcı adlı bir derleme oluşturun.
  2. Ortak arabirimi uygulayan, tanımlayıcı adlı bir çalışma zamanı derlemesi oluşturun.
  3. Ortak arabirimden tür bilgilerini katıştıran bir istemci programı oluşturun ve çalışma zamanı derlemesinden sınıfın bir örneğini oluşturur.
  4. Çalışma zamanı derlemesini değiştirin ve yeniden derleyin.
  5. Yeniden derlenmesi gerekmeden, çalışma zamanı derlemesinin yeni sürümünü kullandığını görmek için istemci programını çalıştırın.

Not

Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için bkz. IDE 'Yi kişiselleştirme.

Koşullar ve sınırlamalar

Bir derlemeden tür bilgilerini aşağıdaki koşullarda ekleyebilirsiniz:

  • Derleme en az bir ortak arabirim kullanıma sunar.
  • Katıştırılmış arabirimlere, ComImport Guid benzersiz GUID 'leri olan öznitelikler ve özniteliklerle açıklama eklenir.
  • Derlemeye, ImportedFromTypeLib özniteliğiyle veya PrimaryInteropAssembly özniteliğiyle ve derleme düzeyi özniteliğiyle açıklama eklenir Guid . Visual C# ve Visual Basic proje şablonları varsayılan olarak bir derleme düzeyi Guid özniteliği içerir.

Ekleme türü birincil işlevi COM birlikte çalışma derlemelerini desteklemek olduğundan, tür bilgilerini tam olarak yönetilen bir çözüme eklediğinizde aşağıdaki sınırlamalar geçerlidir:

  • Yalnızca COM birlikte çalışabilirliğine özgü öznitelikler katıştırılır. Diğer öznitelikler yok sayılır.
  • Bir tür genel parametreler kullanıyorsa ve genel parametrenin türü gömülü bir türse, bu tür bir derleme sınırı boyunca kullanılamaz. Bir derleme sınırının geçmesinin örnekleri, başka bir derlemeden bir yöntemi çağırmayı veya başka bir derlemede tanımlanan türden bir tür türetmeyi içerir.
  • Sabitler ekli değil.
  • System.Collections.Generic.Dictionary<TKey,TValue>Sınıf, gömülü bir türü anahtar olarak desteklemez. Gömülü bir türü anahtar olarak desteklemek için kendi sözlük türünü uygulayabilirsiniz.

Arabirim oluşturma

İlk adım tür denklik arabirim derlemesini oluşturmaktır.

  1. Visual Studio ' de dosya > yeni > Project' ni seçin.

  2. Yeni proje oluştur iletişim kutusunda, şablon ara kutusuna sınıf kitaplığı yazın. listeden C# veya Visual Basic Class Library (.NET Framework) şablonunu seçin ve ardından ileri' yi seçin.

  3. yeni projenizi yapılandırın iletişim kutusunda, Project ad' ın altında, TypeEquivalenceInterface yazın ve ardından oluştur' u seçin. Yeni proje oluşturulur.

  4. Çözüm Gezgini, Class1. cs veya Class1. vb dosyasını sağ tıklatın, Yeniden Adlandır' ı seçin ve dosyayı SınıfAdı SınıfAdı ' nı isamptaliınterface olarak yeniden adlandırın. Ayrıca sınıfını olarak yeniden adlandırmak için istemine Evet yanıtı verin ISampleInterface . Bu sınıf, sınıfının genel arabirimini temsil eder.

  5. Çözüm Gezgini, TypeEquivalenceInterface projesine sağ tıklayın ve ardından Özellikler' i seçin.

  6. Özellikler ekranının sol bölmesinde Oluştur ' u seçin ve Çıkış yolunu bilgisayarınızdaki bir konuma (örneğin, C:\TypeEquivalenceSample) ayarlayın. Bu izlenecek yol boyunca aynı konumu kullanırsınız.

  7. Özellikler ekranının sol bölmesinde oturum aç ' ı seçin ve ardından derlemeyi imzala onay kutusunu seçin. Bir tanımlayıcı ad anahtar dosyası seç açılan menüsünde Yeni' yi seçin.

  8. Tanımlayıcı ad anahtarı oluştur iletişim kutusunda, anahtar dosya adı altında Key. snk yazın. Anahtar dosyamı parolayla koru onay kutusunu kaldırın ve ardından Tamam' ı seçin.

  9. Kod düzenleyicisinde ısamptaınterface sınıf dosyasını açın ve aşağıdaki kodla içeriğini değiştirerek ISampleInterface arabirimi oluşturun:

    using System;
    using System.Runtime.InteropServices;
    
    namespace TypeEquivalenceInterface
    {
        [ComImport]
        [Guid("8DA56996-A151-4136-B474-32784559F6DF")]
        public interface ISampleInterface
        {
            void GetUserInput();
            string UserInput { get; }
        }
    }
    
    Imports System.Runtime.InteropServices
    
    <ComImport()>
    <Guid("8DA56996-A151-4136-B474-32784559F6DF")>
    Public Interface ISampleInterface
        Sub GetUserInput()
        ReadOnly Property UserInput As String
    End Interface
    
  10. Araçlar menüsünde GUID oluştur' u seçin ve Guid oluştur iletişim kutusunda kayıt defteri biçimi' ni seçin. Kopyala' yı seçin ve ardından Çıkış' ı seçin.

  11. GuidKodunuzun özniteliğinde, örnek GUID 'yi KOPYALADıĞıNıZ GUID ile değiştirin ve ayraçları ({}) kaldırın.

  12. Çözüm Gezgini, Özellikler klasörünü genişletin ve AssemblyInfo. cs veya AssemblyInfo. vb dosyasını seçin. Kod Düzenleyicisi 'nde, dosyaya aşağıdaki özniteliği ekleyin:

    [assembly: ImportedFromTypeLib("")]
    
    <Assembly: ImportedFromTypeLib("")>
    
  13. Dosya > + + ve proje kaydetmek için Tümünü Kaydet ' i seçin veya CTRL SHIFT 'e basın.

  14. Çözüm Gezgini, TypeEquivalenceInterface projesine sağ tıklayın ve Oluştur' u seçin. Sınıf kitaplığı DLL dosyası derlenir ve belirtilen derleme çıkış yoluna kaydedilir, örneğin C:\TypeEquivalenceSample.

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

Sonra, tür eşdeğerlik çalışma zamanı sınıfını oluşturun.

  1. Visual Studio ' de dosya > yeni > Project' ni seçin.

  2. Yeni proje oluştur iletişim kutusunda, şablon ara kutusuna sınıf kitaplığı yazın. listeden C# veya Visual Basic Class Library (.NET Framework) şablonunu seçin ve ardından ileri' yi seçin.

  3. yeni projenizi yapılandırın iletişim kutusunda, Project ad' ın altında, TypeEquivalenceRuntime yazın ve ardından oluştur' u seçin. Yeni proje oluşturulur.

  4. Çözüm Gezgini, Class1. cs veya Class1. vb dosyasını sağ tıklayın, Yeniden Adlandır' ı seçin ve dosyayı SınıfAdı SınıfAdı ' dan SampleClass olarak yeniden adlandırın. Ayrıca sınıfını olarak yeniden adlandırmak için istemine Evet yanıtı verin SampleClass . Bu sınıf, ISampleInterface arabirimini uygular.

  5. Çözüm Gezgini, TypeEquivalenceInterface projesine sağ tıklayın ve Özellikler' i seçin.

  6. Özellikler ekranının sol bölmesinde Oluştur ' u seçin ve ardından Çıkış yolunu TypeEquivalenceInterface projesi için kullandığınız aynı konuma ayarlayın, örneğin, C:\TypeEquivalenceSample.

  7. Özellikler ekranının sol bölmesinde oturum aç ' ı seçin ve ardından derlemeyi imzala onay kutusunu seçin. Bir tanımlayıcı ad anahtar dosyası seç açılan menüsünde Yeni' yi seçin.

  8. Tanımlayıcı ad anahtarı oluştur iletişim kutusunda, anahtar dosya adı altında Key. snk yazın. Anahtar dosyamı parolayla koru onay kutusunu kaldırın ve ardından Tamam' ı seçin.

  9. Çözüm Gezgini, TypeEquivalenceRuntime projesine sağ tıklayın ve başvuru Ekle' yi seçin > .

  10. Başvuru Yöneticisi iletişim kutusunda, Araştır ' ı seçin ve çıkış yolu klasörüne gidin. TypeEquivalenceInterface.dll dosyasını seçin, Ekle' yi seçin ve ardından Tamam' ı seçin.

  11. Çözüm Gezgini, Başvurular klasörünü genişletin ve TypeEquivalenceInterface başvurusunu seçin. Özellikler bölmesinde, belirli bir sürümü henüz yoksa yanlış olarak ayarlayın.

  12. Kod düzenleyicisinde SampleClass sınıf dosyasını açın ve sınıfını oluşturmak için içeriğini aşağıdaki kodla değiştirin SampleClass :

    using System;
    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();
            }
        }
    }
    
    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
    
  13. Dosya > + + ve proje kaydetmek için Tümünü Kaydet ' i seçin veya CTRL SHIFT 'e basın.

  14. Çözüm Gezgini, TypeEquivalenceRuntime projesine sağ tıklayın ve Oluştur' u seçin. Sınıf kitaplığı DLL dosyası derlenir ve belirtilen yapı çıkış yoluna kaydedilir.

İstemci projesi oluşturma

Son olarak, arabirim derlemesine başvuran bir tür denklik istemci programı oluşturun.

  1. Visual Studio ' de dosya > yeni > Project' ni seçin.

  2. Yeni proje oluştur iletişim kutusunda, şablon ara kutusuna konsol yazın. listeden C# veya Visual Basic konsol uygulaması (.NET Framework) şablonunu seçin ve ardından ileri' yi seçin.

  3. yeni projenizi yapılandırın iletişim kutusunda, Project ad' ın altında, TypeEquivalenceClient yazın ve ardından oluştur' u seçin. Yeni proje oluşturulur.

  4. Çözüm Gezgini, TypeEquivalenceClient projesine sağ tıklayın ve Özellikler' i seçin.

  5. Özellikler ekranının sol bölmesinde Oluştur ' u seçin ve ardından Çıkış yolunu TypeEquivalenceInterface projesi için kullandığınız aynı konuma ayarlayın, örneğin, C:\TypeEquivalenceSample.

  6. Çözüm Gezgini, TypeEquivalenceClient projesine sağ tıklayın ve başvuru Ekle' yi seçin > .

  7. Başvuru Yöneticisi iletişim kutusunda, TypeEquivalenceInterface.dll dosyası zaten listeleniyorsa, onu seçin. Aksi takdirde, Araştır' ı seçin, çıkış yolu klasörüne gidin, TypeEquivalenceInterface.dll dosyasını seçin ( TypeEquivalenceRuntime.dll değil) ve Ekle' yi seçin. Tamam’ı seçin.

  8. Çözüm Gezgini, Başvurular klasörünü genişletin ve TypeEquivalenceInterface başvurusunu seçin. Özellikler bölmesinde, birlikte çalışma türlerini katıştır ' ı doğru olarak ayarlayın.

  9. Program. cs veya Module1. vb dosyasını kod düzenleyicisinde açın ve istemci programını oluşturmak için içeriğini aşağıdaki kodla değiştirin:

    using System;
    using System.Reflection;
    using TypeEquivalenceInterface;
    
    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();
            }
        }
    }
    
    Imports System.Reflection
    Imports TypeEquivalenceInterface
    
    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
    
  10. Dosya > + + ve proje kaydetmek için Tümünü Kaydet ' i seçin veya CTRL SHIFT 'e basın.

    • Programı derlemek ve çalıştırmak için CTRL F5 tuşuna basın. Konsol çıkışının 1.0.0.0 derleme sürümünü döndürdüğünü unutmayın.

Arabirimi değiştirme

Şimdi, arabirim derlemesini değiştirin ve sürümünü değiştirin.

  1. Visual Studio ' de dosya > > Project/çözüm' ı seçin ve TypeEquivalenceInterface projesini açın.

  2. Çözüm Gezgini, TypeEquivalenceInterface projesine sağ tıklayın ve Özellikler' i seçin.

  3. Özellikler ekranının sol bölmesinde uygulama ' yı seçin ve ardından derleme bilgileri' ni seçin.

  4. Derleme bilgileri Iletişim kutusunda derleme sürümünü ve dosya sürümü değerlerini 2.0.0.0 olarak değiştirip Tamam' ı seçin.

  5. Sampleınterface. cs veya sampleınterface. vb dosyasını açın ve aşağıdaki kod satırını ISampleInterface arabirime ekleyin:

    DateTime GetDate();
    
    Function GetDate() As Date
    
  6. Dosya > + + ve proje kaydetmek için Tümünü Kaydet ' i seçin veya CTRL SHIFT 'e basın.

  7. Çözüm Gezgini, TypeEquivalenceInterface projesine sağ tıklayın ve Oluştur' u seçin. Sınıf kitaplığı DLL dosyasının yeni bir sürümü derlenir ve derleme çıkış yoluna kaydedilir.

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

Ayrıca çalışma zamanı sınıfını değiştirin ve sürümünü güncelleştirin.

  1. Visual Studio ' de dosya > > Project/çözüm' ı seçin ve TypeEquivalenceRuntime projesini açın.

  2. Çözüm Gezgini, TypeEquivalenceRuntime projesine sağ tıklayın ve Özellikler' i seçin.

  3. Özellikler ekranının sol bölmesinde uygulama ' yı seçin ve ardından derleme bilgileri' ni seçin.

  4. Derleme bilgileri Iletişim kutusunda derleme sürümünü ve dosya sürümü değerlerini 2.0.0.0 olarak değiştirip Tamam' ı seçin.

  5. SampleClass. cs veya SampleClass. vb dosyasını açın ve aşağıdaki kodu SampleClass sınıfına ekleyin:

     public DateTime GetDate()
     {
         return DateTime.Now;
     }
    
    Public Function GetDate() As DateTime Implements ISampleInterface.GetDate
        Return Now
    End Function
    
  6. Dosya > + + ve proje kaydetmek için Tümünü Kaydet ' i seçin veya CTRL SHIFT 'e basın.

  7. Çözüm Gezgini, TypeEquivalenceRuntime projesine sağ tıklayın ve Oluştur' u seçin. Sınıf kitaplığı DLL dosyasının yeni bir sürümü derlenir ve derleme çıkış yoluna kaydedilir.

Güncelleştirilmiş istemci programını çalıştır

Yapı çıkış klasörü konumuna gidin ve TypeEquivalenceClient.exe çalıştırın. Konsol çıkışının artık, 2.0.0.0 derlemesinin yeni sürümünü, yeniden TypeEquivalenceRuntime Derlenmekte olan program olmadan yansıttığını unutmayın.

Ayrıca bkz.