Wie kompiliere ich die x64 asp.net Website?

8

Ich versuche, ( Visual Studio ) eine ASP.Net-Website mit der Chilkat-Bibliothek zu kompilieren. Die Kompilierung schlägt aufgrund dieses Fehlers fehl:

  

Datei oder Baugruppe konnte nicht geladen werden 'ChilkatDotNet2, Version = 9.0.8.0,   Kultur = neutral,   PublicKeyToken = eb5fc1fc52ef09bd 'oder   eine seiner Abhängigkeiten. Ein Versuch   wurde gemacht, um ein Programm mit einem zu laden   falsches Format.

Mir wurde gesagt, dass dieser Fehler wegen der Nichteinhaltung der Plattform auftritt.

Das Seltsame ist, dass obwohl die Kompilierung fehlschlägt, die Seite nach dem Zugriff von einem Browser funktioniert. Meine Theorie ist, dass die Kompilierung IIS den csc.exe-Compiler aus dem Ordner Framework64 (64 Bit) verwendet, während Visual Studio den csc.exe-Compiler aus dem Framework verwendet (32-Bit). Mappe. Wenn dies wirklich so ist, Wie kann ich mein Visual Studio so konfigurieren, dass es mit dem 64-Bit-Compiler für ASP.Net-Sites ausgeführt wird?

Dies ist meine aktuelle Entwicklungskonfiguration:

  • Windows 7 (x64).
  • Visual Studio 2008 Pro (x86 natürlich ...).
  • Chilkat-Bibliothek (x64)
  • IIS / Asp.net (x64).
Will 07.04.2010, 23:57
quelle

2 Antworten

25

Das Warum :
Ihre Website (der verwaltete Teil, wahrscheinlich alles Nicht-Dritte) wird nicht im 32- oder 64-Bit-Modus kompiliert, zumindest nicht in der Art, wie Sie denken. Der Unterschied ist, dass WebDevServer.exe (eine Version von Cassini ), die Visual Studio für seinen Webserver verwendet, ausschließlich 32-Bit ist. Also lädt es nur 32-Bit-kompatible DLLs.

IIS auf einer 64-Bit-Maschine kann abhängig von den Konfigurationseinstellungen entweder im 32- oder 64-Bit-Modus (standardmäßig 64-Bit) ausgeführt werden, sodass es keine Probleme beim Laden Ihrer Anwendung gibt.

Lösung: Leider gibt es hier nicht viele Optionen, Ich habe die gleiche Frage vor einer Weile gestellt . Am besten verwenden Sie IIS zum Debuggen. Sie richten es so ein:

  • Webprojekt & gt; Einstellungen
  • Registerkarte "Web"
  • Wählen Sie unter Server Lokalen IIS-Webserver verwenden aus
Nick Craver 08.04.2010 00:06
quelle
0

Die Lösung besteht darin, beide DLLs (die x64- und x86-DLLs) in den GAC zu schreiben und jede Anwendung dynamisch entscheiden zu lassen, wann sie die x64- oder x86-DLL verwenden (natürlich müssen Sie auf die GAC-DLL verweisen) Ihr Projekt).

Ich habe persönlich mit dem Entwickler von ChilkatDotNet2 gesprochen und dies ist eine Lösung, auf die wir uns geeinigt haben.

    
anon 30.12.2011 19:34
quelle