2009-09-03 10 views
5

Desidero utilizzare due diversi assembly Microsoft.Office.Interop (versione 11 e 12) in base alla versione di Office installata sul computer del cliente.Come utilizzare due diversi assembly Microsoft Interop in un progetto?

Sono stato in grado di aggiungere questi due asseblies al mio progetto (li sto usando localmente - sono nella mia cartella bin, in due diverse sottocartelle), ho usato alias su questo assembly per poter usare entrambi nel mio progetto (rispettivamente, gli alias sono Excel11 e Excel12).

Ma unfourtunately, quando sto cercando di costruire la soluzione sto ottenendo avvertimento:

Non c'è modo di risolvere i conflitti tra "Microsoft.Office.Interop.Excel, Version = 12.0.0.0, Cultura = neutro, PublicKeyToken = 71e9bce111e9429c "e " Microsoft.Office.Interop.Excel, Versione = 11.0.0.0, Cultura = neutra, PublicKeyToken = 71e9bce111e9429c ". scelta "Microsoft.Office.Interop.Excel, Version = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" arbitrariamente.

+1

Provare a impostare il tipo di intervallo Embed su Vero nelle proprietà Riferimento – igelineau

risposta

0

sì, è grave, ma comprensibile. Consiglio vivamente di guardare nell'SDK Open XML per la generazione senza COM. ma capisco crunch del tempo e altri requisiti, quindi se non puoi ... ecco cosa vorrei fare.

per assicurarsi che fossero sulla stessa pagina, ecco cosa sto pensando per aliasing http://www.dotnetperls.com/extern se per qualche strana ragione che non funziona per voi, c'è un altro approccio che si potrebbe usare sotto.

Per motivi di pulizia è possibile creare un paio di nuovi progetti. uno per ciascuna versione che è necessario implementare, assegnandogli un nome specifico per la versione come Excel11, Excel12.

Quindi creare classi wrapper per le funzioni a cui si desidera essere in grado di accedere da ciascuna, si può ottenere fantasia e creare una classe astratta in un progetto comune separato che le classi wrapper estendono, quindi è possibile fare riferimento genericamente dal proprio codice principale dal nome della classe Abstract per uniformità. hai solo bisogno di aggiungere riferimenti ai nuovi progetti nel tuo progetto principale e selezionare quale wrapper vuoi in base a quello che stai controllando, le chiavi di registro o altro. Spero che sia d'aiuto.

Problemi correlati