2012-07-27 12 views
8

Ich habe eine Web Forms-Projekt Web-Site. Diese Website verweist auf 4 Klassenbibliotheksprojekte. 3 dieser Klassenbibliotheken verweisen auf eine Assembly eines Drittanbieters. Ich erhalte den folgenden Compilerfehler für jedes der 3 Klassenbibliotheksprojekte.Web Site: MSB3270: Es gab eine Diskrepanz zwischen der Prozessorarchitektur

AspNetCompiler: error ASPCONFIG: Konnte nicht Datei oder Assembly laden 'myAssembly' oder eine ihrer Abhängigkeiten. Es wurde versucht, ein Programm mit einem falschen Format zu laden. [Projekt. metaproj]

Ich habe alle möglichen Kombinationen von AnyCPU/x86/x64 auf den Klassenbibliotheksprojekten versucht. Ich kann das auf dem Website-Projekt nicht ändern. Ich habe sowohl eine x86 und x64-Version der Drittanbieter-DLL. Versuchte beide.

"ClassLibrary.csproj" (Standard-Ziel) (4) -> (ResolveAssemblyReferences Ziel) -> C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (1561 , 5 ): warning MSB3270: Es gab eine Diskrepanz zwischen der Prozessorarchitektur des Projekts, das "MSIL" gebaut wurde, und der Prozessorarchitektur der Referenz "ThirdPartyDll, Version = xxx, Culture = neutral, processorArchitectu re = x86" , "x86". Diese Nichtübereinstimmung kann Laufzeitfehler verursachen. Bitte berücksichtigen Sie die gewünschte Prozessorarchitektur Ihres Projekts über die Konfiguration auf Manager, um die Prozessorarchitekturen zwischen Ihrem Projekt und Referenzen auszurichten, oder nehmen Sie eine Abhängigkeit von Referenzen mit einer Prozessorarchitektur th an der Zielprozessorarchitektur von Ihrem Projekt. [ClassLibrary.cspro

Im Folgenden wird die Lösungskonfiguration erläutert. Hinweis Ich kann hier nicht von "AnyCPU" wechseln, sondern nur innerhalb jedes einzelnen Klassenbibliotheksprojekts.

Solution configuration

Alle zu einer Web Application .NET 4

Konvertieren der Web-Site ist keine Option.

Danke,

+0

Siehe David Sacks Antwort hier: http://stackoverflow.com/questions/10113532/visual-studio-c-c-solution-hitting-mismatch-between-processor-architecture –

Antwort

5

Offensichtlich haben Sie eine native 32-Bit-DLL. Daher muss der Anwendungspool auf IIS so konfiguriert sein, dass das .NET-Framework im 32-Bit-Modus ausgeführt wird.

Dies kann im IIS-Manager konfiguriert werden. Gehen Sie auf „Application Pool“, wählen Sie den entsprechenden Anwendungspool und öffnen Sie die „Erweiterte Einstellungen ...“ -Dialog. Die 32-Bit-Option ist in der Nähe der Spitze.

+0

Dasselbe geschieht mit einer 64-Bit-Version des Drittanbieter-DLL. Ich werde den App-Pool auf 32-Bit festlegen, sobald ich auf einem Dev-Server bereitstellen. –

+0

Dann klingt es, als ob die Dritte Bibliothek weitere Abhängigkeiten, die nicht wie Microsoft C Runtime DLL gefunden werden können. Welche DLL ist es überhaupt? Eine private oder eine Open-Source-Bibliothek? – Codo

+0

http://dtsearch.com/ –

0

Einer Ihrer referenzierten Baugruppen ist nur x86 und damit die Projektkette, die es nur für x86 verweist bauen werden müssen. Stellen Sie außerdem sicher, dass bei der Bereitstellung Ihres Anwendungspools für 32bit konfiguriert ist.

+0

Ich habe dies versucht. Alle Projekte auf x86 setzen Ich bekomme Fehler Konnte Datei oder Assembly 'Projekt' oder eine seiner Abhängigkeiten nicht laden. Es wurde versucht, ein Programm mit einem falschen Format zu laden. Mit der x86-Drittanbieter-DLL und alles auf x86 gesetzt. –

+0

Stellen Sie sicher, dass Sie, dass für alle Lösungskonfiguration getan haben. Mach eine Reinigung. Stellen Sie sicher, dass keine lokale oder eine kollidierende Version im GAC vorhanden ist. Beachten Sie, dass, wenn Dritte Bibliothek A 32bit und Projekt B nutzt, dann Projekt C Projekt B verwendet - alle drei x86 –

+0

GAC sein müssen keine Version hat. Was genau meinst du mit einer lokalen Version? Im Ordner bin? Und nach 'all solution Configuration'? Siehe oben Bearbeiten (Screenshot der Lösung 'AnyCPU' Option). –

Verwandte Themen