2010-11-04 2 views
5

Wir haben eine große Lösung mit vielen verschiedenen Bibliotheken. Wir sind gerade in die Entwicklung auf einem 64-Bit-System migriert und haben uns Gedanken darüber gemacht, welches Plattformziel wir für jedes einzelne Projekt in der Lösung spezifizieren sollten.C# Lösung, können alle Projekte auf AnyCPU abzielen, außer einem, der x86 sein muss?

Zur Zeit haben wir nur ein Bibliotheksprojekt, das auf eine 32-Bit-DLL-Datei verweist. Wir verweisen auf ein Interop dieser DLL-Datei, erhalten jedoch einen Fehler, wenn wir x86 als Plattform für dieses Projekt verwenden, während die übrigen Projekte in der Lösung als "Beliebige CPU" belassen werden.

Meine Frage ist, können wir jede CPU auf alle unsere Projekte abgesehen von der, die die 32-Bit-Interop verweist? Oder sollte einfach alles für x86 erstellt werden, da dies ohne Fehler zu funktionieren scheint.

Antwort

3

Ja.

Alle DLLs aber einer kann AnyCPU sein.

Nur sicher sein, den Prozess x86 zu machen, und alle DLLs werden als 32 Bit geladen.

Was ist der Fehler, den Sie bekommen? Das Hinzufügen der Fehlermeldung würde wahrscheinlich hilfreichere Antworten ergeben.

+0

entwickeln wir auf einer 64-Bit-Maschine. Wenn wir auf "Any CPU" für alle Projekte abzielen, außer für die Bibliothek, die die 32-Bit-DLL referenzieren muss, funktioniert sie nicht. Wir erhalten eine Fehlermeldung "Abrufen der COM-Klassen Factory für Komponente mit CLSID {Nummern} fehlgeschlagen. – Horges

+0

Ah, ja, dann wird es nicht funktionieren. Es sollte funktionieren, wenn Sie nur das EXE-Projekt zu x86 ändern. – codekaizen

+0

Ja, das funktioniert Wir setzen NUR die Hauptanwendung auf X86 und der Rest kann als AnyCPU bleiben.Wenn (und wenn wir können) wir eine neue DLL erhalten, die 64 Bit unterstützt, müssen wir nur die Zielplattform für die Hauptanwendung ändern. Danke Codekaizen – Horges

1

Ich denke, wenn alle Ihre DLLs anyCpu sind, kann Ihre .exe entweder x64 oder x86 sein. Aber wenn Ihre exe entweder x64 oder x86 ist, kann Ihre .dlls nicht die andere sein. Außerdem, wenn Ihre .exe AnyCPU ist, glaube ich, dass es in jedem Modus geladen wird, der native auf dem Computer ist. Das bedeutet, dass Ihre DLLs anyCpu oder der native Modus für Ihr System sein müssen.

Verwandte Themen