Come si costruisce un progetto in qualsiasi modalità CPU quando si tratta di librerie di terze parti?

StackOverflow https://stackoverflow.com/questions/4857221

Domanda

Ho una libreria di terze parti disponibile per il download in .dlls a 32 bit o 64 bit. La mia macchina di sviluppo è in esecuzione a Windows a 32 bit 7. La mia macchina di produzione target esegue Windows Server a 64 bit 2008 R2. La mia soluzione di progetto si sta attualmente costruendo in qualsiasi modalità CPU.

Esiste un modo elegante per gestire questo caso senza dover avere progetti duplicati (MyProject32 e MyProject64, ciascuno riferisce la versione appropriata a 32 o 64 bit della libreria di terze parti)?

La prima soluzione a cui ho pensato è agganciarsi al AppDomain.AssemblyResolve evento, e avere le mie biblioteche di terze parti nei loro sotto-conduttori da 32 e 64 bit. Caricherei quindi l'assemblaggio appropriato in modo dinamico in base alla modalità corrente.

La seconda soluzione a cui ho pensato è quella di costruire solo in modalità a 32 bit e utilizzare solo la libreria di 32 bit di terze parti (che mi sembra un poliziotto ...).

Nessuna soluzione mi fa sentire particolarmente pulito ... Qualsiasi consiglio sarebbe utile!

È stato utile?

Soluzione

Se questo è un programma interno, allora non vedo il problema. Installare la DLL a 32 bit sulla macchina di sviluppo e installare la DLL a 64 bit sulla macchina di produzione. Non installare la DLL sbagliata sulla macchina sbagliata. Con un'app interna, il problema della DLL sbagliata sulla macchina è praticamente equivalente a non avere affatto la DLL.

Se si tratta di un'applicazione che distribuirai, oppure non puoi dipendere dalle macchine che hanno le DLL giuste nel posto giusto, allora la tua prima soluzione sembra ragionevole: capire quale DLL è appropriato per l'attuale ambiente di runtime e caricalo. Oppure, se non può essere caricato, visualizzare un messaggio di errore che indica qual è il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top