558 Stimmen

Wie behebe ich den Visual Studio-Kompilierungsfehler "Übereinstimmung zwischen Prozessorarchitekturen"?

Ich bin neu in der Projektkonfiguration in Visual Studio 2010, aber ich habe einige Recherche betrieben und kann dieses Problem immer noch nicht ganz lösen. Ich habe eine Visual Studio-Lösung mit einer C++ DLL, die auf die C# DLL verweist. Die C# DLL verweist auf einige andere DLLs, einige innerhalb meines Projekts und einige externe. Wenn ich versuche, die C++ DLL zu kompilieren, erhalte ich diese Warnung:

Warnung MSB3270: Es gab eine Unstimmigkeit zwischen der Prozessorarchitektur des Projekts, das erstellt wird, "MSIL" und der Prozessorarchitektur der Referenz "[interne C# dll]", "x86".

Es sagt mir, dass ich zum Konfigurations-Manager gehen soll, um meine Architekturen anzupassen. Die C# DLL ist mit dem Plattformziel x86 eingerichtet. Wenn ich versuche, dies auf etwas anderes wie Any CPU zu ändern, beschwert es sich, weil eine der externen DLLs, von der sie abhängt, das Plattformziel x86 hat.

Wenn ich mir den Konfigurations-Manager anschaue, zeigt er die Plattform für meine C# DLL als x86 und für mein C++-Projekt als Win32 an. Das scheint die richtige Einrichtung zu sein; ich möchte sicherlich nicht, dass das Projekt für mein C++-Projekt auf x64 gesetzt ist, was die einzige andere Option ist, die präsentiert wird.

Was mache ich hier falsch?

0 Stimmen

Was ist die Beschwerde, speziell, wenn man sie auf Any CPU ändert?

2 Stimmen

Ich habe nicht genügend Informationen, um einen fundierten Vorschlag zu machen, aber klicken Sie mit der rechten Maustaste auf Ihre Lösung -> Projektbaureihenfolge und stellen Sie sicher, dass Ihr C#-Projekt vor dem C++-Projekt erstellt wird. Wenn nicht, gehen Sie zum Registerkarte "Abhängigkeiten" und teilen Sie VS mit, dass das C++-Projekt vom C#-Projekt abhängt.

7 Stimmen

Visual Studio ist wieder Mist in diesem Fall. Die Plattform oben auf meinem Bildschirm zeigt x64 an, aber die Warnung besagt, dass das Projekt, das gebaut wird, "MSIL" ist. Also sagt mir Visual Studio, dass es einen Unterschied zwischen Äpfeln und Orangen gibt, wenn ich keine Äpfel benutze. Können wir es in Visual Stupido umbenennen?

2voto

ertbaran Punkte 11

Ich habe gerade das Platform-Ziel auf "Any CPU" in den Eigenschaften geändert und es ist erledigt! Vielleicht sollten Sie ein Release Build erstellen.

Um dies zu tun:

Ihre Projekt Eigenschaften

Platform-Ziel

1voto

Thick_propheT Punkte 946

Für mein Projekt habe ich die Anforderung, sowohl für x86 als auch für x64 erstellen zu können. Das Problem dabei ist, dass es immer eine Beschwerde gibt, wenn man Verweise hinzufügt, während man einen benutzt, und dann den anderen erstellt.

Meine Lösung besteht darin, die *.csproj-Dateien manuell zu bearbeiten, damit Zeilen wie diese:

in dies geändert werden:

1voto

user1257110 Punkte 21

Ich hatte ein ähnliches Problem, das durch die MS UNIT Test DLL verursacht wurde. Meine WPF-Anwendung wurde als x86 kompiliert, aber die Unit-Test-DLL (referenzierte EXE-Datei) als "Any CPU". Ich habe die Unit-Test-DLL geändert, sodass sie für x86 kompiliert wird (gleich wie die EXE), und das hat das Problem gelöst.

1voto

Daryl Punkte 18141

Sie erhalten möglicherweise auch diese Warnung für MS Fakes-Assemblys, die nicht so einfach zu lösen ist, da das f.csproj per Befehl erstellt wird. Zum Glück ermöglicht das Fakes-XML Ihnen, es dort hinzuzufügen.

1voto

ssamuel Punkte 419

Ich hatte bereits ein ähnliches Problem, insbesondere beim Hinzufügen einer Testlösung zu einer vorhandenen x64-Lösung, wie SharePoint. In meinem Fall scheint es damit zusammenzuhängen, dass bestimmte Projektvorlagen standardmäßig als bestimmte Plattformen hinzugefügt werden.

Hier ist die Lösung, die oft für mich funktioniert: Alles in der Konfigurations-Manager (das aktive Konfigurations-Dropdown-Menü, normalerweise steht Debug da, ist ein guter Weg dorthin zu gelangen) und Projektplattform (in den Projekt-Eigenschaften) auf die richtige Plattform einstellen, dann erstellen, dann alles wieder auf AnyCPU zurücksetzen. Manchmal muss ich einige Abhängigkeiten entfernen und erneut hinzufügen (DLLs in den Eigenschaften jedes Projekts) und manchmal muss die Einstellung "Tests in einem 32-Bit- oder 64-Bit-Prozess ausführen" geändert werden (Doppelklick auf Local.testsettings und gehen Sie zu Hosts).

Es scheint mir, dass es nur darum geht, etwas einzustellen und dann zurückzusetzen, aber wahrscheinlich passiert hinter den Kulissen noch mehr, das ich nicht sehe. Es hat jedoch in der Vergangenheit recht zuverlässig für mich funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X