558 Stimmen

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

Ich bin neu in der Projekt-Konfiguration in Visual Studio 2010, aber ich habe einige Recherchen durchgeführt und kann dieses Problem immer noch nicht ganz verstehen. Ich habe eine Visual Studio-Lösung mit einem C++-DLL, das auf das C#-DLL verweist. Das C#-DLL verweist auf 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 zwischen der Prozessorarchitektur des Projekts, das erstellt wird ("MSIL") und der Prozessorarchitektur der Referenz "[internes C#-DLL]", "x86".

Es sagt mir, dass ich zum Konfigurations-Manager gehen soll, um meine Architekturen abzugleichen. Das C#-DLL ist mit der Zielplattform x86 eingerichtet. Wenn ich versuche, dies auf etwas anderes zu ändern, wie zum Beispiel Any CPU, beschwert es sich, weil eine der externen DLLs, von denen es abhängt, die Zielplattform 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. Dies scheint die richtige Konfiguration zu sein; sicherlich möchte ich nicht, dass das Projekt für mein C++-Projekt die Plattform auf x64 festgelegt hat, was die einzige andere Option ist, die präsentiert wird.

Was mache ich hier falsch?

0 Stimmen

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

2 Stimmen

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

7 Stimmen

Visual Studio ist wieder Mist dabei. Die Plattform oben auf meinem Bildschirm zeigt x64 an, aber die Warnung besagt, dass das zu erstellende Projekt "MSIL" ist. Also sagt Visual Studio mir, dass es einen Unterschied 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 so eingestellt, dass sie auf .NET 4.5 abzielten, auf dem Build-Server war das Windows 8.1 SDK (für .NET 4.5.1) installiert. Nachdem ich meine Projekte auf .NET 4.5.1 umgestellt hatte (das war kein Problem für mich, war aber für eine völlig neue Anwendung), habe ich die Warnung nicht mehr erhalten...

0voto

Eduardo Pelais Punkte 1547

Ich habe diese Warnung behoben, indem ich "Configuration Manager" durch Release (Mixed Platform) ersetzt habe.

0voto

cdonner Punkte 35735

Ich habe diese Warnung in Visual Studio 2012 erhalten, als ich eine SQL Server 2012 SP1 SSIS-Pipeline-Skriptaufgabe 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 das Verwenden von Nuget und das Installieren des im Projekt verwendeten Komponenten (SQLite) wurde es behoben! Versuchen Sie, Ihre Komponente auf diese Weise zu installieren und das Ergebnis zu überprüfen

0voto

Damion Punkte 63

Möchte nur für diejenigen posten, bei denen die Antworten hier ihr Problem nicht gelöst haben.

Wenn Sie Ihre Anwendung ausführen, stellen Sie sicher, dass die Lösungsplattform im Dropdown-Menü korrekt eingestellt ist. Bei mir war sie auf x86 eingestellt, was wiederum 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