2009-09-03 11 views
5

Chcę używać dwóch różnych zestawów Microsoft.Office.Interop (wersja 11 i 12), w zależności od wersji pakietu Office zainstalowanej na komputerze klienta.Jak korzystać z dwóch różnych zestawów Microsoft Interop w jednym projekcie?

Byłem w stanie dodać te dwa asseblety do mojego projektu (używam ich loccaly - są one w moim folderze bin, w dwóch różnych podfolderach), użyłem aliasów na tych złożeniach, aby móc używać obu ich w moim projekcie (odpowiednio, aliasy to Excel11 i Excel12).

Ale unfourtunately, gdy próbuję zbudować rozwiązanie otrzymuję ostrzeżenie:

Nie sposób rozwiązać konflikt między „Microsoft.Office.Interop.Excel, version = 12.0.0.0, Kultura = neutralny, PublicKeyToken = 71e9bce111e9429c "i " Microsoft.Office.Interop.Excel, Wersja = 11.0.0.0, Kultura = neutralny, PublicKeyToken = 71e9bce111e9429c ". Wybierając "Microsoft.Office.Interop.Excel, Wersja = 12.0.0.0, Kultura = neutralny, PublicKeyToken = 71e9bce111e9429c" arbitralnie.

+1

Spróbuj ustawić typ embedu Embed na True w właściwościach odniesienia – igelineau

Odpowiedz

0

tak, to wulgarne, ale zrozumiałe. Gorąco polecam zajrzeć do Open XML SDK do generowania bez COM. ale rozumiem czasy kryzysu i inne wymagania, więc jeśli nie możesz ... Oto, co zrobiłbym.

, aby upewnić się, że były na tej samej stronie, o co myślę o aliasingu http://www.dotnetperls.com/extern Jeśli z jakiegoś dziwnego powodu, który nie działa dla ciebie, istnieje inne podejście, które można użyć poniżej.

Dla czystości można stworzyć kilka nowych projektów. po jednym dla każdej wersji, którą chcesz zaimplementować, nazwij je wersją specyficzną, jak Excel11, Excel12.

Następnie skonstruuj klasy opakowujące dla funkcji, do których chcesz mieć dostęp z każdego z nich, możesz uzyskać fantazyjny taniec i stworzyć klasę abstrakcyjną w oddzielnym projekcie wspólnym, który rozszerzają klasy otoki, aby można było ogólnie odwoływać się do nich główny kod według nazwy klasy abstrakcyjnej dla jednolitości. wystarczy dodać odniesienia do nowych projektów w głównym projekcie i wybrać opakowanie, które chcesz na podstawie tego, czy sprawdzasz wersję, klucze rejestru lub w inny sposób. Mam nadzieję, że to pomoże.

Powiązane problemy