Sdílet prostřednictvím


Návod: Vložení typů ze spravovaných sestavení (C# and Visual Basic)

Typ informace ze spravovaného sestavení se silným názvem vložíte, můžete spojit volně typy k dosažení nezávislosti verze aplikace.Program, lze zapsat pomocí více verzí spravované knihovny typů bez nutnosti provedena nová kompilace pro každou verzi.

Vkládání typ se často používá volání interop modelu COM, jako je aplikace, která používá objekty automatizace ze sady Microsoft Office.Vkládání informací o typu umožňuje stejné sestavení programu pro práci s různými verzemi sady Microsoft Office na různých počítačích.Však také použít typ vkládání plně spravované roztokem.

Informace o typu lze vložit z sestavení, který má následující vlastnosti:

  • Sestavení zpřístupňuje alespoň jedno veřejné rozhraní.

  • Vložený rozhraní jsou označena ComImport atribut a Guid atributu (a jedinečný identifikátor GUID).

  • Sestavení označena ImportedFromTypeLib atributu nebo PrimaryInteropAssembly atribut a sestavení úrovně Guid atributu.(Výchozí šablony projektu jazyka Visual Basic a Visual C# zahrnují sestavení úrovně Guid atributu.)

Po zadání veřejné rozhraní, které lze vložit, můžete vytvořit runtime třídy, které implementují těchto rozhraních.Klientský program potom vložit informace o těchto rozhraních typu v době návrhu odkazem sestavení, která obsahuje veřejné rozhraní a nastavení Embed Interop Types vlastnost odkaz na True.Toto je shodné s pomocí kompilátoru příkazového řádku a pomocí odkazu na sestavení /link volba kompilátoru.Klientský program potom můžete načíst instance objektů runtime zadali jako těchto rozhraních.Pokud vytvoříte novou verzi vašeho runtime silným názvem sestavení, není nutné provedena nová kompilace s aktualizovaného runtime sestavení klientský program.Místo toho klientský program nadále používat libovolné verze sestavení runtime k dispozici, pomocí vloženého typu informací pro veřejná rozhraní.

Protože vkládání typ primární funkce vkládání informací typu ze sestavení interop modelů COM, platí následující omezení vložit informace o typu v plně spravovaného řešení:

  • Jsou vloženy pouze atributy specifické pro volání interop modelu COM.; ostatní atributy jsou ignorovány.

  • Pokud je vložený typ typu obecného parametru typu používá obecné parametry, typu nelze použít přes hranice sestavení.Překračování hranice sestavení příklady volání metody z jiného sestavení nebo typ odvozené od typu definované v jiném sestavení.

  • Konstanty nejsou vložená.

  • Dictionary Třída nepodporuje vložené typ jako klíč.Můžete implementovat vlastní typ slovníku podporu vložený typ jako klíč.

V tomto návodu bude proveďte následující:

  • Vytvořte sestavení se silným názvem veřejné rozhraní, která obsahuje informace o typu, který může být vložen.

  • Vytvořte sestavení silným názvem runtime, která implementuje dané veřejné rozhraní.

  • Vytvořte klientský program, který vloží informace o typu z veřejného rozhraní a vytvoří instanci třídy ze sestavení modulu runtime.

  • Upravit a znovu vytvořit sestavení modulu runtime.

  • Spusťte program klienta zobrazit nová verze runtime sestavení je používán bez nutnosti znovu zkompilujte aplikaci klienta.

[!POZNÁMKA]

Na vašem počítači se můžou v následujících pokynech zobrazovat jiné názvy nebo umístění některých prvků uživatelského rozhraní Visual Studia. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.

Vytvoření rozhraní

Vytvořte projekt typu rovnocennosti rozhraní

  1. V Visual Studio, soubor příkaz Nový a klepněte na tlačítko projektu.

  2. V Nový projekt v dialogovém okně pole Typy projektů podokně Přesvědčte se, zda Windows je zaškrtnuto.Vyberte Knihovna tříd v šablony podokně.V název zadejte TypeEquivalenceInterfacea klepněte na tlačítko OK.Je vytvořen nový projekt.

  3. V Aplikaci Solution Explorer, klepněte pravým tlačítkem myši na soubor Class1.vb nebo MultiThreadApplication a klepněte na tlačítko Přejmenovat.Přejmenujte soubor na ISampleInterface.vb nebo ISampleInterface.cs a stiskněte klávesu ENTER.Přejmenování souboru bude také přejmenovat třídy na ISampleInterface.Tato třída bude představovat veřejné rozhraní třídy.

  4. TypeEquivalenceInterface projektu a klepněte na tlačítko Vlastnosti.Klepněte kompilace karta v Visual Basic nebo sestavení karta v Visual C#.Nastaví cestu výstup na platné umístění v počítači rozvoj jako C:\TypeEquivalenceSample.Toto umístění se použije také později v tomto návodu.

  5. Při úpravách stále vlastnosti projektu, klepněte podepsání kartu.Vyberte Podpis sestavení možnost.V Zvolte soubor klíče silného názvu klepněte na položku <... nový >.V název souboru klíče zadejte key.snk.Vymazat chránit klíč souboru s heslem políčko.Klikněte na tlačítko OK.

  6. Otevřete soubor ISampleInterface.vb nebo ISampleInterface.cs.Přidejte následující kód do souboru třídy ISampleInterface, vytvořit rozhraní ISampleInterface.

    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. Na Nástroje nabídky, klepněte na tlačítko Vytvořte identifikátor Guid.V Vytvořte identifikátor GUID dialogové okno, klepněte na tlačítko Formát registru a klepněte na tlačítko kopie.Klepněte na tlačítko Konec.

  8. V Guid atribut, odstranit identifikátor GUID vzorku a vložte identifikátor GUID, který jste zkopírovali z Vytvořte identifikátor GUID dialogové okno.Odeberte z kopírovaného GUID složené závorky ({}).

  9. V Visual Basic, projektu nabídky, klepněte na tlačítko Zobrazit všechny soubory.Tento krok vynechejte, pokud používáte Visual C#.

  10. V Aplikaci Solution Explorer, rozbalte Tento projekt složky, pokud používáte Visual Basic.Rozbalte Vlastnosti složky, pokud používáte Visual C#.Poklepejte na soubor AssemblyInfo.vb nebo AssemblyInfo.cs.Přidejte následující atribut souboru.

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

    Uložte soubor.

  11. Uložte projekt.

  12. TypeEquivalenceInterface projektu a klepněte na tlačítko sestavení.Soubor knihovny DLL třídy je zkompilován a uložen do zadaného sestavení výstupní cesta (například C:\TypeEquivalenceSample).

Vytvoření třídy Runtime

Vytvořte projekt typu runtime rovnocennost

  1. V Visual Studio, soubor příkaz Nový a klepněte na tlačítko projektu.

  2. V Nový projekt v dialogovém okně pole Typy projektů podokně Přesvědčte se, zda Windows je zaškrtnuto.Vyberte Knihovna tříd v šablony podokně.V název zadejte TypeEquivalenceRuntimea klepněte na tlačítko OK.Je vytvořen nový projekt.

  3. V Aplikaci Solution Explorer, klepněte pravým tlačítkem myši na soubor Class1.vb nebo MultiThreadApplication a klepněte na tlačítko Přejmenovat.Přejmenujte soubor na SampleClass.vb nebo SampleClass.cs a stiskněte klávesu ENTER.Přejmenovat soubor přejmenuje také třídy na SampleClass.Tato třída bude provádět ISampleInterface rozhraní.

  4. TypeEquivalenceRuntime projektu a klepněte na tlačítko Vlastnosti.Klepněte kompilace karta v Visual Basic nebo sestavení karta v Visual C#.Nastavení cesty k výstupu do stejného umístění, například použité v projektu TypeEquivalenceInterface C:\TypeEquivalenceSample.

  5. Při úpravách stále vlastnosti projektu, klepněte podepsání kartu.Vyberte Podpis sestavení možnost.V Zvolte soubor klíče silného názvu klepněte na položku <... nový >.V název souboru klíče zadejte key.snk.Vymazat chránit klíč souboru s heslem políčko.Klikněte na tlačítko OK.

  6. TypeEquivalenceRuntime projektu a klepněte na tlačítko Přidat odkaz na.Klepněte procházení kartu a vyhledejte složku výstupní cestu.Vyberte soubor TypeEquivalenceInterface.dll a klepněte na tlačítko OK.

  7. V Visual Basic, projektu nabídky, klepněte na tlačítko Zobrazit všechny soubory.Tento krok vynechejte, pokud používáte Visual C#.

  8. V Aplikaci Solution Explorer, rozbalte odkazy složky.Vyberte odkaz TypeEquivalenceInterface.Nastavit v okně Vlastnosti TypeEquivalenceInterface odkaz Určitou verzi vlastnost False.

  9. Přidejte následující kód do souboru třídy SampleClass, vytvořte třídu SampleClass.

    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. Uložte projekt.

  11. TypeEquivalenceRuntime projektu a klepněte na tlačítko sestavení.Soubor knihovny DLL třídy je zkompilován a uložen do zadaného sestavení výstupní cesta (například C:\TypeEquivalenceSample).

Vytvoření projektu klienta

Vytvořte projekt typu rovnocennosti klienta

  1. V Visual Studio, soubor příkaz Nový a klepněte na tlačítko projektu.

  2. V Nový projekt v dialogovém okně pole Typy projektů podokně Přesvědčte se, zda Windows je zaškrtnuto.Vyberte Aplikace konzoly v šablony podokně.V název zadejte TypeEquivalenceClienta klepněte na tlačítko OK.Je vytvořen nový projekt.

  3. TypeEquivalenceClient projektu a klepněte na tlačítko Vlastnosti.Klepněte kompilace karta v Visual Basic nebo sestavení karta v Visual C#.Nastavení cesty k výstupu do stejného umístění, například použité v projektu TypeEquivalenceInterface C:\TypeEquivalenceSample.

  4. TypeEquivalenceClient projektu a klepněte na tlačítko Přidat odkaz na.Klepněte procházení kartu a vyhledejte složku výstupní cestu.Vyberte soubor TypeEquivalenceInterface.dll (ne TypeEquivalenceRuntime.dll) a klepněte na tlačítko OK.

  5. V Visual Basic, projektu nabídky, klepněte na tlačítko Zobrazit všechny soubory.Tento krok vynechejte, pokud používáte Visual C#.

  6. V Aplikaci Solution Explorer, rozbalte odkazy složky.Vyberte odkaz TypeEquivalenceInterface.Nastavit v okně Vlastnosti TypeEquivalenceInterface odkaz Vložit Interop typy vlastnost True.

  7. Přidejte následující kód do souboru Module1.vb nebo Program.cs vytvořit klientský program.

    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. Stiskněte CTRL + F5 sestavit a spustit program.

Změna rozhraní

Změna rozhraní

  1. V Visual Studio, soubor příkaz otevřenýcha klepněte na tlačítko Projekt nebo řešení.

  2. V Otevřít projekt dialogové okno, klepněte pravým tlačítkem myši na TypeEquivalenceInterface projektu a klepněte na tlačítko Vlastnosti.Klikněte na kartu Aplikace.Klepněte Informací O sestavení tlačítko.Změnit Verze sestavení a Verze souboru hodnoty 2.0.0.0.

  3. Otevřete soubor ISampleInterface.vb nebo ISampleInterface.cs.Přidejte následující řádek kódu rozhraní ISampleInterface.

    Function GetDate() As Date
    
    DateTime GetDate();
    

    Uložte soubor.

  4. Uložte projekt.

  5. TypeEquivalenceInterface projektu a klepněte na tlačítko sestavení.Nová verze souboru knihovny DLL třídy je zkompilován a uložen v zadaném sestavení výstupní cesta (například C:\TypeEquivalenceSample).

Změna třídy Runtime

Změna třídy runtime

  1. V Visual Studio, soubor příkaz otevřenýcha klepněte na tlačítko Projekt nebo řešení.

  2. V Otevřít projekt dialogové okno, klepněte pravým tlačítkem myši na TypeEquivalenceRuntime projektu a klepněte na příkaz Vlastnosti.Klikněte na kartu Aplikace.Klepněte Informací O sestavení tlačítko.Změnit Verze sestavení a Verze souboru hodnoty 2.0.0.0.

  3. Otevřete soubor SampleClass.vb nebo SampleClass.cs.Přidejte následující řádky kódu do třídy SampleClass.

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

    Uložte soubor.

  4. Uložte projekt.

  5. TypeEquivalenceRuntime projektu a klepněte na tlačítko sestavení.Aktualizovaná verze souboru knihovny DLL třídy je zkompilován a uložen v dříve zadané sestavení výstupní cesta (například C:\TypeEquivalenceSample).

  6. V Průzkumníku souborů otevřete složku výstupní cestu (například C:\TypeEquivalenceSample).Poklepejte na TypeEquivalenceClient.exe ke spuštění programu.Program bude odrážet nové verze sestavení TypeEquivalenceRuntime bez s byla provedena nová kompilace.

Viz také

Referenční dokumentace

/link (Visual Basic)

/link (Možnosti kompilátoru C#)

Koncepty

Průvodce programováním v C#

Další zdroje

Příručka k programování v jazyce Visual Basic

Programování se sestaveními