558 Stimmen

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

Ich bin neu in der Projektkonfiguration in Visual Studio 2010, aber ich habe einiges recherchiert und kann dieses Problem immer noch nicht ganz lösen. Ich habe eine Visual Studio-Lösung mit einem C++-DLL, das das C#-DLL referenziert. Das C#-DLL referenziert einige andere DLLs, einige innerhalb meines Projekts und einige externe. Wenn ich versuche, das C++-DLL zu kompilieren, erhalte ich diese Warnung:

Warnung MSB3270: Es gab einen Unterschied in der Prozessorarchitektur des zu erstellenden Projekts "MSIL" und der Prozessorarchitektur des Verweises "[internes C#-DLL]", "x86".

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

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

Was mache ich hier falsch?

0 Stimmen

Was ist die Beschwerde, speziell, wenn Sie es auf Any CPU ändern?

2 Stimmen

Ich habe nicht genug Informationen, um eine fundierte Empfehlung abzugeben, aber klicken Sie mit der rechten Maustaste auf Ihre Lösung -> Projekt Build Reihenfolge und stellen Sie sicher, dass Ihr C#-Projekt vor dem C++-Projekt erstellt wird. Wenn nicht, gehen Sie zum Register "Abhängigkeiten" und teilen Sie VS mit, dass das C++-Projekt vom C#-Projekt abhängt.

7 Stimmen

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

0voto

NicoCV Punkte 41

Ich hatte eine sehr ähnliche Warnung in meinem Build. Meine Projekte waren auf .NET 4.5 ausgerichtet, auf dem Build-Server war das Windows 8.1 SDK (für .NET 4.5.1) installiert. Nachdem ich meine Projekte aktualisiert habe, um auf .NET 4.5.1 abzuzielen (das war kein Problem für mich, war für eine völlig neue Anwendung), habe ich die Warnung nicht mehr erhalten...

0voto

Eduardo Pelais Punkte 1547

Ich habe diese Warnung gelöst, indem ich "Konfigurations-Manager" in Release (Mixed Platform) geändert habe.

0voto

cdonner Punkte 35735

Ich habe diese Warnung in Visual Studio 2012 erhalten, als ich ein SQL Server 2012 SP1 SSIS Pipeline-Skriptaufgaben kompiliert habe - bis ich SQL Server 2012 SP2 installiert habe.

0voto

Saghachi Punkte 673

Ich hatte das gleiche Problem mit SQLite beim Öffnen der Verbindung, und durch die Verwendung von Nuget und die Installation des im Projekt verwendeten Komponenten (SQLite) wurde es behoben! Versuchen Sie, Ihre Komponente auf diese Weise zu installieren und überprüfen Sie das Ergebnis

0voto

Damion Punkte 63

Möchte nur für diejenigen posten, denen hier keine Antworten auf ihr Problem geholfen haben.

Beim Ausführen Ihrer Anwendung stellen Sie sicher, dass die Lösungsplattform im Dropdown-Menü korrekt eingestellt ist. Bei mir war sie auf x86 gesetzt, was dieses Problem verursacht hat.

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