Wie erstelle ich ein Projekt in einem CPU -Modus, wenn ich mich mit Bibliotheken von Drittanbietern befasse?

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

Frage

Ich habe eine Bibliothek von Drittanbietern, die entweder in 32-Bit- oder 64-Bit-Dlls zum Download verfügbar ist. Auf meinem Entwicklungsgerät wird 32-Bit-Windows 7 ausgeführt. Mein Zielproduktionsmaschine läuft 64-Bit Windows Server 2008 R2. Meine Projektlösung baut derzeit in jedem CPU -Modus auf.

Gibt es eine elegante Möglichkeit, diesen Fall zu bewältigen, ohne doppelte Projekte durchzuführen (MyProject32 und MyProject64, wobei jeweils die entsprechende 32- oder 64-Bit-Version der 3. Partybibliothek verweist)?

Die erste Lösung, an die ich dachte AppDomain.AssemblyResolve Veranstaltung, und haben meine Bibliotheken der Drittanbieter in ihren eigenen 32- und 64-Bit-Unterordnern. Ich würde dann die entsprechende Montage dynamisch basierend auf dem aktuellen Modus laden.

Die zweite Lösung, an die ich dachte, besteht darin, nur im 32-Bit-Modus aufzubauen und nur die 32-Bit-Bibliothek der 3. Party zu verwenden (was mir ein Cop-out erscheint ...).

Keine der beiden Lösung macht mich besonders sauber ... jeder Rat wäre hilfreich!

War es hilfreich?

Lösung

Wenn dies ein internes Programm ist, sehe ich das Problem nicht. Installieren Sie die 32-Bit-DLL auf der Entwicklungsmaschine und installieren Sie die 64-Bit-DLL auf der Produktionsmaschine. Installieren Sie nicht die falsche DLL auf der falschen Maschine. Mit einer internen App ist das Problem der falschen DLL auf der Maschine ziemlich gleichbedeutend damit, die DLL überhaupt nicht zu haben.

Wenn dies eine Anwendung ist, die Sie verteilen, oder Sie können sich nicht darauf verlassen, dass die Maschinen die richtigen DLLs an der richtigen Stelle haben, klingt Ihre erste Lösung vernünftig: Finden Sie heraus, welche DLL für die aktuelle Laufzeitumgebung geeignet ist, und lade es. Oder, wenn es nicht geladen werden kann, zeigen Sie eine Fehlermeldung an, in der das Problem angezeigt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top