2009-09-03 4 views
5

Ich möchte zwei verschiedene Microsoft.Office.Interop-Assemblys (Version 11 und 12) verwenden, abhängig von der Office-Version, die auf dem Computer des Kunden installiert ist.Wie verwenden Sie zwei verschiedene Microsoft Interop-Assemblys in einem Projekt?

Ich konnte diese beiden Assembies zu meinem Projekt hinzufügen (ich benutze sie loccaly - sie sind in meinem Ordner bin, in zwei verschiedenen Unterordnern), habe ich Aliase auf diesen Baugruppen verwendet, um beide zu verwenden Sie sind in meinem Projekt (bzw. Aliase sind Excel11 und Excel12).

Aber unfourtunately, wenn ich versuche, die Lösung zu erstellen Ich bin immer Warnung:

No way Konflikt zwischen „Microsoft.Office.Interop.Excel, Version = 12.0.0.0, Kultur zu lösen = neutral, PublicKeyToken = 71e9bce111e9429c "und " Microsoft.Office.Interop.Excel, Version = 11.0.0.0, Kultur = neutral, PublicKeyToken = 71e9bce111e9429c ". Wählen "Microsoft.Office.Interop.Excel, Version = 12.0.0.0, Kultur = neutral, PublicKeyToken = 71e9bce111e9429c" willkürlich.

+1

Versuchen Sie, den Einbettungs-Interop-Typ in den Referenzeigenschaften auf True zu setzen – igelineau

Antwort

0

ja das ist eklig, aber verständlich. Ich empfehle dringend, das Open XML SDK für die COM-less-Generierung zu untersuchen. aber ich verstehe Zeit knirscht und andere Anforderungen, wenn Sie nicht können ... hier ist, was ich tun würde.

um sicherzustellen, waren auf der gleichen Seite, hier ist, was ich für Aliasing http://www.dotnetperls.com/extern denken, wenn aus irgendeinem seltsamen Grund, der für Sie nicht funktioniert, gibt es einen anderen Ansatz, den Sie unten verwenden könnten.

Für Sauberkeit könnten Sie ein paar neue Projekte erstellen. eine für jede Version, die Sie implementieren müssen, benennen Sie sie als Versionsversion wie Excel11, Excel12.

Erstellen Sie dann Wrapper-Klassen für die Funktionen, auf die Sie zugreifen können. Sie können eine abstrakte Klasse in einem separaten Common Project erstellen, das Ihre Wrapper-Klassen erweitern, sodass Sie sie generisch von Ihrer beziehen können Hauptcode durch den Namen der abstrakten Klasse für Einheitlichkeit. Sie müssen lediglich Verweise auf die neuen Projekte in Ihrem Hauptprojekt hinzufügen und auswählen, welchen Wrapper Sie verwenden möchten, wie auch immer Sie Version, Registrierungsschlüssel oder anderes überprüfen. Ich hoffe es hilft.

Verwandte Themen