6

Ich habe eine C# -Projekt in Visual Studio 2012, die eine PCL ist, Targeting diese Plattformen (ich die Namen entfernt):Warum erstellt die DLL eines PCL-Projekts eine x86-Assembly?

enter image description here

Wenn ich versuche, die DLL hinzufügen, von einem erfolgreichen Build, um einen Silverlight 5-Projekt in VS2013, erhalte ich diese Warnung und es scheint nicht wirklich hinzugefügt werden:

Warnung 1 es gibt eine Diskrepanz zwischen der Prozessorarchitektur des Projektes war „MSIL“ gebaut und die Prozessorarchitektur der Referenz "[Name]", "x86". Diese Nichtübereinstimmung kann Laufzeitfehler verursachen. Ziehen Sie in Betracht, die Zielprozessorarchitektur Ihres Projekts über den Konfigurationsmanager zu ändern, um die Prozessorarchitekturen zwischen Ihrem Projekt und den Referenzen auszurichten, oder nehmen Sie Abhängigkeiten von Referenzen mit einer Prozessorarchitektur, die der angepeilten Prozessorarchitektur Ihres Projekts entspricht.

enter image description here

Warum ein PCL als x86 zeigen, würde?

+4

Ihre Warnung ist klein, bitte kopieren Sie die Fehlermeldung in Ihre Frage Körper –

+2

eddie_cat, ich habe es hinzugefügt, obwohl Sie auch können Rechtsklick auf das Bild und View Image (zumindest in Firefox). – Jake

+1

Ich denke nicht, dass es normal ist, dass Ihre Konfiguration und Plattform N/A ist. Versuchen Sie, eine neue Konfiguration mit der AnyCPU-Einstellung zu erstellen. –

Antwort

0

Wenn Sie ein PCL-Projekt für mehrere Ziele haben und in anderen Projekten auf die Ausgabe .dll verweisen möchten, müssen Sie die richtige .dll mit der richtigen Kompilierung auswählen.

Zum Beispiel:

  • Sie ein Business-Projekt, das PCL für WP 8 und SL 5.
  • Sie haben zwei Projekte, die die DLL aus dem oben Business-Projekt
    • SL proj Referenz
    • WP 8 proj

Im WindowsPhone proj Wenn Sie zum Hinzufügen einer Referenz gehen, sollten Sie diejenige auswählen, die für ARM kompiliert wurde [beachten Sie, dass Sie die x86-Version auswählen sollten, wenn der Emulator nicht ARM ist]. Wenn Sie die x86-Version hinzufügen und im Konfigurationsmanager auf ARM setzen, warnt Sie Visual Studio mit demselben Fehler, den Sie haben, da Sie einen ARM-Code ausführen und auf einen x86-Code verweisen.

Überprüfen Sie, ob die hinzugefügte .dll mit dem Konfigurationsmanager übereinstimmt. Ändern Sie es für die richtige Architektur, die Sie anstelle von "Mehrere Plattformen" vs "Any CPU" wünschen