2016-05-23 34 views
0

Meine App ist ein C# Plug-In für eine nicht verwaltete Drittanbieter-App. Ich habe ein Windows-Formular mit einem ihrer Steuerelemente (ein AxInterop), das von einer ihrer nicht verwalteten DLLs abhängt. Ihre Version 2015 des gleichen Steuerelements hängt von einer anderen Typbibliotheksdatei ab (z. B. abc.tlb ist jetzt 123.tlb), aber beide unterstützen die gleiche Schnittstelle.So laden Sie die korrekte Version des nicht verwalteten Steuerelements eines Drittanbieters dynamisch in C#

Ich möchte keine separaten Builds erstellen.

Wie bekomme ich meinen Code, um die ABC.tlb für die früheren Versionen zu verwenden und 123.tlb für die 2015-Version zu verwenden?

Können Sie Tlb-Dateien wie Assemblys beim Start laden?

danke

+1

Das macht keinen Sinn. Die TLB-Datei ist die Typbibliothek, die bei der Kompilierung verwendet wird. Sie müssen daher Ihre App mit einer neuen Typbibliotheksreferenz neu kompilieren. –

+0

Ich habe Dynamik vor und Reflexion verwendet, so dass ich nicht auf die gleiche DLL verweisen muss, die von diesem Steuerelement verwendet wird. Der Unterschied hier ist jetzt, dass ich das Steuerelement verwende, das auf die DLL verweist, und ich suche nach einer Möglichkeit, es zu finden, die neue DLL für 2015 zu finden. Also denkend, dass ich eine andere tlb laden muss, muss ich nur laden diese neue DLL beim Start. Ist das sinnvoll? – Perry

Antwort

0

ok, löste es mit Dynamik schließlich. Die Kontrolle von AxInterop war ein Ablenkungsmanöver. Das Steuerelement verfügt über eine Eigenschaft, die von dem Typ ist, der für 2015 geändert wurde. Ich verwendete Dynamics, um die Eigenschaft aus dem Arbeitsbereich-Objekt des Dritten abzurufen, und legte dann die Eigenschaft auf diesen Wert fest. Mein Projekt hat keine Verweise auf ABC oder 123.