Assemblyname Codebase Forex
Ist die Einstellung AssemblyName. CodeBase Kraft der Assembly in den LoadFrom-Kontext geladen Im arbeiten an einer Art von Plugin-System. Ich muss in der Lage sein, Type. GetType etc. verwenden. An jedem Ort in meinem Code sollte ich nicht wissen, ob der Typ aus einem Plugin DLL kommen oder nicht. Meine Plugins befinden sich in einem Ordner Plugins unter dem bin Verzeichnis meiner Anwendung (windowsweb) und jedes Plugin befindet sich in seinem eigenen Ordner. Ich setze meine Sondierung Pfad zu Plugins (oder binbinPlugins für Web), auch wenn es keinen Unterschied machen, da sie in Unterordnern sind. Und ich lade mein Plugin wie folgt Hinweis: PluginInfo ist nur eine Klasse, die den Status meines Plugins zu halten. Ich frage mich, weil ich die CodeBase-Eigenschaft des Assemblynamens Assembly. Load gesetzt ist, meine Assembly zu finden, auch wenn ihr nicht im Sondierungspfad, bedeutet es, dass die Assembly in den Standardkontext geladen oder die Last aus Kontext geladen wird Normal, dass das AssemblyResolve - Ereignis nach der Neuerstellung wieder erhöht wird Mit dem AssemblyName (string).ctor und dem Festlegen der AssemblyName. CodeBase-Eigenschaft können Sie nicht sicher sein, dass Assembly. Load (AssemblyName) in den Standardkontext geladen wird. Es wird zuerst versuchen, es in den Standard-Kontext zu laden, aber wenn dies fehlschlägt, wird es die Codebasis verwenden, um es in den LoadFrom-Kontext laden. Werfen Sie einen Blick auf Suzanne Cooks Blog-Eintrag auf das Thema für weitere Informationen. Um sicherzustellen, dass die Assembly in den Standardkontext geladen wird, legen Sie die AssemblyName. CodeBase-Eigenschaft nicht fest und werden für eine System. IO. FileLoadException vorbereitet. Wenn das Objekt erfolgreich erstellt wird (keine Ausnahme wird geworfen), wurde die Assembly in den Standardkontext geladen. Der Vorteil des Kontextes LoadFrom besteht darin, dass die Abhängigkeiten der geladenen Assembly aufgelöst werden können, wenn sie auf demselben Pfad vorhanden sind. Auf der anderen Seite können Assemblys, die auf den Standardkontext geladen werden, nur dann aufgelöst werden, wenn sie auf dem GAC, dem AppDomain. BaseDirectory oder dem AppDomain. RelativeSearchPath vorhanden sind. Das AppDomain. AssemblyResolve - Ereignis ist wahrscheinlich aufgetreten, da eine Abhängigkeit der geladenen Assembly nicht in diesen Loactions gefunden werden kann. Antwort # 1 am: März 13, 2010, 06:13:13 am »Wie man eine Assembly zur Laufzeit, die sich in einem Ordner befindet, die nicht der bin Ordner der Anwendung ist Sie müssen nicht eine Assembly, die eine Anwendung zur Laufzeit in th8230 verwenden müssen Sie nicht haben Um eine Assembly zu setzen, die eine Anwendung zur Laufzeit im bin-Ordner der Anwendung verwenden muss. Sie können die Assembly in einem beliebigen Ordner auf dem System, und dann können Sie sich auf die Assembly zur Laufzeit. Dieser Schritt-für-Schritt-Artikel beschreibt drei Methoden, die Sie verwenden können, um auf t8230 zu verweisen Dieser Artikel beschreibt drei Methoden, die Sie verwenden können, um auf die Assemblys zu verweisen, die sich in Ordnern befinden, die nicht der bin-Ordner des Anwendung. Dieser Artikel setzt voraus, dass Sie mit den folgenden Themen vertraut sind: Allgemeine Vertrautheit mit Microsoft Visual Basic oder Microsoft Visual Basic 2005 oder mit Microsoft Visual C oder Microsoft Visual C 2005 Allgemeine Vertrautheit mit Assemblies in Visual Basic oder Visual Basic 2005 und in Visual C oder Microsoft Visual C 2005 Allgemeine Vertrautheit mit. config-Dateien in Visual Basic oder Visual Basic 2005 und in Visual C oder Microsoft Visual C 2005 Die folgende Liste beschreibt die empfohlene Hardware, Software, Netzwerk-Infrastruktur und Service Packs, die Sie benötigen: Microsoft Framework Microsoft Visual Studio oder Microsoft Visual Studio 2005 Methode 1: Installieren der Assembly im globalen Assemblycache (GAC) Der GAC ist ein computerweiter Cache-Cache, auf dem die Common Language Runtime installiert ist. Der GAC speichert Baugruppen, die Sie ausdrücklich für mehrere Anwendungen freigeben. Hinweis In der GAC können nur so genannte Assemblys installiert werden. Gehen Sie folgendermaßen vor, um eine Assembly in dem GAC zu installieren: 1. Starten Sie Visual Studio oder Visual Studio 2005. Das Dialogfeld Neues Projekt wird angezeigt. 3. Unter Projekttypen. Klicken Sie auf Visual Basic. Oder klicken Sie auf Visual C. Hinweis: In Visual Studio 2005 klicken Sie auf Visual Basic oder klicken Sie auf Visual C. Standardmäßig wird die Class1.vb-Datei von Visual Basic oder Visual Basic 2005 erstellt. Standardmäßig wird die Datei Class1.cs von Visual C oder Visual C 2005 erstellt. 6. Fügen Sie der Klasse Class1 des Class1 den folgenden Code hinzu. Vb oder der Datei Class1.cs. Visual Basic oder Visual Basic 2005-Code Visual C oder Visual C 2005-Code 9. Klicken Sie in dem Menü Datei auf Alles speichern, um die Lösung zu speichern. 10. Installieren Sie die MyAssembly1-Baugruppe im GAC. Weitere Informationen dazu finden Sie in folgendem Artikel der Microsoft Knowledge Base: 315682 (support. microsoftkb315682) Wie Sie eine Assembly in dem globalen Assemblycache in Visual Basic installieren Maschinell übersetzter Artikel Hinweis: Dies ist ein maschinell übersetzter Artikel. NET Klicken Sie auf die folgende Artikelanzahl, um weitere Informationen zu diesem Thema in Visual C zu erhalten, um den Artikel der Microsoft Knowledge Base zu lesen: 815808 (support. microsoftkb815808) So installieren Sie eine Assembly in dem globalen Assemblycache in Visual C 11. Erstellen Eine neue Client-Anwendung. Gehen Sie hierzu folgendermaßen vor: a. Erstellen Sie in Visual Studio oder Visual Studio 2005 eine neue Visual Basic - oder Visual Basic 2005-Windows-Anwendung oder eine neue Visual C - oder Visual C 2005-Windows-Anwendung mit dem Namen TestClient1. Standardmäßig wird die Form1.vb-Datei von Visual Basic oder Visual Basic 2005 erstellt. Standardmäßig wird die Datei Form1.cs von Visual C oder Visual C 2005 erstellt. B. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweis hinzufügen. Das Dialogfeld Referenz hinzufügen wird angezeigt. C. Klicken Sie auf Durchsuchen. Suchen Sie C: MyAssembly, klicken Sie auf die MyAssembly1-Assembly, und klicken Sie dann auf Öffnen. Hinweis: In diesem Schritt ist C: MyAssembly ein Platzhalter für den tatsächlichen Speicherort der MyAssembly1-Assembly. D. Fügen Sie dem Form1Load-Ereignis der Form1.vb-Datei oder der Datei Form1.cs wie folgt den folgenden Code hinzu: Visual Basic oder Visual Basic 2005-Code Visual C oder Visual C 2005-Code f. Klicken Sie im Menü Debuggen auf Start, um die Anwendung zu erstellen und auszuführen. Methode 2: Verwenden einer Anwendungskonfigurationsdatei (.config) mit den ltcodeBasegt-Tags Eine. config-Datei enthält die folgenden Einstellungen: Einstellungen, die für eine Anwendung spezifisch sind Einstellungen, die die gemeinsame Sprachenlaufzeit liest, z. B. die Richtlinieneinstellungen für die Assemblybindung und das Remoting Objekteinstellungen Einstellungen, die die Anwendung liest Die ltcodeBasegt-Tags geben an, wo die Common Language Runtime eine Assembly finden kann. Die Common Language Runtime wendet die Einstellungen der ltcodeBasegt-Tags aus der. config-Datei an. Die Einstellungen der ltcodeBasegt - Tags bestimmen die Version und den Speicherort der Baugruppe. Gehen Sie folgendermaßen vor, um eine. config-Datei mit den ltcodeBasegt-Tags zu verwenden, um auf die Assemblys zu verweisen: 1. Erstellen Sie ein neues Klassenbibliotheksprojekt mit dem Namen MyAssembly2, indem Sie die Schritte 1 bis 6 von quotMethod 1: Installieren Sie die Assembly in der globalen Assembly Cache (GAC). 2. Machen Sie die Baugruppe stark benannt. Klicken Sie auf eine der Artikelnummern, die in Schritt 8 des quotMethod 1: Installieren Sie die Assembly in dem globalen Assemblycache (GAC) quot Abschnitt erwähnt wird, um weitere Informationen zu erhalten. 3. Erstellen Sie eine neue Clientanwendung. Gehen Sie hierzu folgendermaßen vor: a. Erstellen Sie in Visual Studio oder Visual Studio 2005 eine neue Visual Basic - oder Visual Basic 2005-Windows-Anwendung oder eine neue Visual C - oder Visual C 2005-Windows-Anwendung mit dem Namen TestClient2. Standardmäßig wird die Form1.vb-Datei von Visual Basic oder Visual Basic 2005 erstellt. Standardmäßig wird die Datei Form1.cs von Visual C oder Visual C 2005 erstellt. B. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Referenz hinzufügen. Das Dialogfeld Referenz hinzufügen wird angezeigt. C. Klicken Sie auf Durchsuchen. Klicken Sie auf die MyAssembly2-Assembly, und klicken Sie dann auf Öffnen. D. Unter Referenzen. Klicken Sie mit der rechten Maustaste auf MyAssembly2. Und klicken Sie dann auf Eigenschaften. Das Fenster Eigenschaften wird angezeigt. D. h. Legen Sie im Eigenschaftenfenster die Copy Local-Eigenschaft der Assembly auf False fest. F. Fügen Sie dem Form1Load-Ereignis der Form1.vb-Datei oder der Datei Form1.cs wie folgt den folgenden Code hinzu: Visual Basic - oder Visual Basic 2005-Code Visual C - oder Visual C 2005-Code h. Klicken Sie im Menü Erstellen auf Projektmappe erstellen. 4. Finden Sie die publicKeyToken-Attributnummer der Assembly, die Sie erstellt haben. Gehen Sie hierzu folgendermaßen vor: Suchen Sie an der Visual Studio - oder Visual Studio 2005-Eingabeaufforderung den folgenden Ordner: Hinweis: Suchen Sie nach der publicKeyToken-Attributnummer den Ordner, der Ihre kompilierte Bibliothek-Assembly enthält. Dies ist normalerweise der Ordner "bin" in Ihrem Projektordner, der zuvor in diesem Schritt erwähnt wurde. ein. Geben Sie den folgenden Befehl ein: Hinweis: Sie müssen einen Großbuchstaben quotTquot verwenden, um den richtigen öffentlichen Schlüssel zu erhalten. Der Befehl gibt einen Hexadezimalwert zurück, der die publicKeyToken-Attributnummer der Assembly darstellt. 5. Gehen Sie folgendermaßen vor, um die Versionsnummer der Assembly zu finden: Suchen Sie in dem Microsoft Windows Explorer den folgenden Ordner: a. Klicken Sie mit der rechten Maustaste auf die Datei MyAssembly2.dll, und klicken Sie dann auf Eigenschaften. Das Fenster Eigenschaften wird angezeigt. B. Klicken Sie im Fenster Eigenschaften auf die Registerkarte Version. Hinweis Die Assemblyversion wird im Abschnitt Value angegeben. 6. Verwenden Sie die publicKeyToken-Attributnummer und die Versionsnummer, um die richtige Assembly zu identifizieren. Hinweis Sie müssen die publicKeyToken-Attributnummer, die Versionsnummer und den Pfad der MyAssembly2.dll-Datei angeben, die die ltcodeBasegt-Tags verwendet, um zur Laufzeit auf die MyAssembly2.dll-Datei zu verweisen. 7. Fügen Sie dem Projekt eine. config-Datei hinzu. Gehen Sie hierzu folgendermaßen vor: Klicken Sie im Menü Projekt auf Neues Element hinzufügen. ein. Klicken Sie im Dialogfeld Neues Element hinzufügen unter Anwendungsvorlage auf Anwendungskonfigurationsdatei. B. Stellen Sie sicher, dass der Dateiname App. config ist. Und klicken Sie dann auf Öffnen. C. Fügen Sie der Datei den folgenden Code hinzu: Hinweis: Die Datei TestClient2.exe. config befindet sich im Ordner Debug oder im Ordner Freigeben. Beide Ordner befinden sich im Ordner bin. Der von Ihnen ausgewählte Lösungskonfigurationsmodus bestimmt den Speicherort der Datei "TestClient2.exe. config". 8. Nehmen Sie die folgenden Änderungen in den ltassemblyIdentitygt-Tags vor: Ändern Sie das name - Attribut in den Namen Ihrer Bibliothek-Assembly. ein. Ändern Sie das publicKeyToken-Attribut in dem öffentlichen Schlüssel, den Sie in Schritt 4 dieses Abschnitts ermittelt haben. 9. Nehmen Sie die folgenden Änderungen in den ltcodeBasegt-Tags vor: Ändern Sie das Versionsattribut auf die Versionsnummer der Assembly, die Sie in Schritt 5 dieses Abschnitts ermittelt haben. ein. Ändern Sie das href-Attribut in dem Pfad, in dem sich die DLL befindet. 10. Klicken Sie im Menü Debuggen auf Start, um das Projekt zu erstellen, und führen Sie die Anwendung aus. Methode 3: Verwenden des AssemblyResolve-Ereignisses Das AssemblyResolve-Ereignis wird ausgelöst, wenn die Common Language Runtime versucht, an eine Assembly zu binden und fehlschlägt. Sie können die AddHandler-Methode verwenden, um der Anwendung eine Ereignisbehandlungsroutine hinzuzufügen, die die richtige Assembly zurückgibt, wenn das AssemblyResolve-Ereignis ausgelöst wird. Der AssemblyResolve-Ereignishandler muss ein Assembly-Objekt zurückgeben und die Common Language Runtime muss an dieses Objekt binden. Normalerweise können Sie die Assembly. LoadFrom-Methode verwenden, um die Assembly zu laden und dann das Objekt zurückzugeben. Gehen Sie hierzu folgendermaßen vor 1. Erstellen Sie ein neues Klassenbibliotheksprojekt mit dem Namen MyAssembly3, indem Sie die Schritte 1 bis 7 der quotMethod 1: Installieren Sie die Assembly in dem globalen Assemblycache-Abschnitt (GAC). 2. Erstellen Sie eine neue Client-Anwendung. Gehen Sie hierzu folgendermaßen vor: a. Erstellen Sie in Visual Studio oder Visual Studio 2005 eine neue Visual Basic - oder Visual Basic 2005-Windows-Anwendung oder erstellen Sie eine neue Visual C - oder Visual C 2005-Windows-Anwendung mit dem Namen TestClient3. Standardmäßig wird die Form1.vb-Datei von Visual Basic oder Visual Basic 2005 erstellt. Standardmäßig wird die Datei Form1.cs von Visual C oder Visual C 2005 erstellt. B. Fügen Sie ein Button-Steuerelement der Form1.vb-Datei oder der Form1.cs-Datei hinzu. C. Doppelklicken Sie auf das Button1-Steuerelement, und fügen Sie dem Ereignis Button1Click den folgenden Code hinzu: Visual Basic oder Visual Basic 2005-Code Visual C oder Visual C 2005-Code e. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweis hinzufügen. Das Dialogfeld Referenz hinzufügen wird angezeigt. F. Klicken Sie auf Durchsuchen. Klicken Sie auf die MyAssembly3-Assembly, und klicken Sie dann auf Öffnen. G. Klicken Sie in dem Ordner Verweis mit der rechten Maustaste auf die MyAssembly3-Assembly, und klicken Sie dann auf Eigenschaften. Das Fenster Eigenschaften wird angezeigt. H. Legen Sie im Eigenschaftenfenster die Copy Local-Eigenschaft der Assembly auf False fest. 3. Fügen Sie dem AssemblyResolve-Ereignis in dem Form1Load-Ereignis einen Ereignishandler wie folgt hinzu: Visual Basic oder Visual Basic 2005-Code Visual C - oder Visual C 2005-Code 5. Definieren Sie die MyResolveEventHandler - Funktion wie folgt: Visual Basic oder Visual Basic 2005-Code Visual C oder Visual C 2005-Code 38. Klicken Sie im Menü Debuggen auf Start, um die Anwendung auszuführen. Hinweis Sie müssen den System. Reflection-Namespace importieren, um diese Anwendung auszuführen. 39. Klicken Sie auf Button1, um die HelloWorld () - Methode der MyAssembly3-Assembly aufzurufen.
Comments
Post a Comment