Web Site: MSB3270: Es gab eine Diskrepanz zwischen der Prozessorarchitektur

8

Ich habe ein Web Forms-Website-Projekt. 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.

  

ASPNETCOMPILER: Fehler ASPCONFIG: Datei oder Assembly konnte nicht geladen werden   'myAssembly' oder eine seiner Abhängigkeiten. Es wurde versucht, eine Datei zu laden   Programm mit einem falschen Format. [Projekt.       metaproj]

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

  

"ClassLibrary.csproj" (Standardziel) (4) - & gt;       (ResolveAssemblyReferences-Ziel) - & gt;         C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (1561,5       ): warning MSB3270: Es gab eine Diskrepanz zwischen der Prozessorarchitektur von       Das Projekt wird "MSIL" und die Prozessorarchitektur der Referenz gebaut       "ThirdPartyDll, Version = xxx, Culture = neutral, ProzessorArchitectu       re = x86 "," x86 ". Diese Nichtübereinstimmung kann Laufzeitfehler verursachen. Bitte beachten Sie chang       durch die Konfiguration die gewünschte Prozessorarchitektur Ihres Projekts       auf Manager, um die Prozessorarchitekturen zwischen Ihrem Projekt und       Referenzen oder nehmen eine Abhängigkeit von Referenzen mit einer Prozessorarchitektur th       at entspricht der angepeilten Prozessorarchitektur Ihres Projekts. [ClassLibrary.cspro       j]

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

Alle .NET 4

Das Konvertieren der Website in eine Webanwendung ist keine Option.

Danke,

    
Sam Leach 27.07.2012, 15:19
quelle

2 Antworten

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 zu "Anwendungspool", wählen Sie den entsprechenden Anwendungspool und öffnen Sie den Dialog "Erweiterte Einstellungen ...". Die 32-Bit-Option ist in der Nähe der Spitze.

    
Codo 27.07.2012, 16:07
quelle
0

Eine Ihrer referenzierten Assemblies ist nur x86 und daher muss die Projektkette, die darauf verweist, nur für x86 erstellt werden. Stellen Sie außerdem sicher, dass bei der Bereitstellung Ihres Anwendungspools die Konfiguration für 32bit konfiguriert ist.

    
Ivan Zlatev 27.07.2012 15:28
quelle