Ich erhalte die Fehlermeldung "Es wurde versucht, ein Programm mit einem falschen Format zu laden" in einem SQL Server-Replikationsprojekt

318

Der genaue Fehler ist wie folgt

Datei oder Assembly 'Microsoft.SqlServer.Replication, Version = 9.0.242.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Es wurde versucht, ein Programm mit einem falschen Format zu laden.

Ich habe vor kurzem wieder angefangen, an diesem Projekt zu arbeiten, nachdem ich zwei Monate zu einem anderen Projekt gewechselt bin. Es hat vorher perfekt funktioniert und ich habe alle Referenzen überprüft.

Glatzkopf
quelle

Antworten:

405

Die Antwort von baldy unten ist richtig, aber Sie müssen möglicherweise auch 32-Bit-Anwendungen in Ihrem AppPool aktivieren.

Quelle: http://www.alexjamesbrown.com/uncategorized/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependencies-an-attempt-was-made-to-load- a-Programm-mit-einem-falschen-Format /

Beim Einrichten einer Anwendung für die Ausführung auf meinem lokalen Computer (unter Vista 64 Bit) ist folgender Fehler aufgetreten:

Datei oder Assembly ChilkatDotNet2oder eine ihrer Abhängigkeiten konnte nicht geladen werden . Es wurde versucht, ein Programm mit einem falschen Format zu laden.

Natürlich verwendet die Anwendung ChilKat-Komponenten , aber es scheint, dass die von uns verwendete Version nur die 32-Bit-Version ist.

Um diesen Fehler zu beheben, habe ich meinen App-Pool in IIS so eingestellt, dass 32-Bit-Anwendungen zulässig sind. Öffnen Sie den IIS-Manager, klicken Sie mit der rechten Maustaste auf den App-Pool und wählen Sie Erweiterte Einstellungen (siehe unten).

Geben Sie hier die Bildbeschreibung ein

Setzen Sie dann "32-Bit-Anwendungen aktivieren" auf "Wahr".

Geben Sie hier die Bildbeschreibung ein

Alles erledigt!

bboyle1234
quelle
Würde dies dazu führen, dass der gesamte Anwendungspool als 32-Bit und nicht als 64-Bit ausgeführt wird? Wäre das erneute Kompilieren der Abhängigkeit für 64-Bit / alle Plattformen eine bessere Lösung? Ich habe dieses Problem aufgrund von NFOP, aber da es Open Source ist, könnte ich es neu kompilieren.
Jamie Barrow
2
Der Link funktioniert nicht, aber Ihre Erklärung hat ausgereicht, um mein Problem zu lösen. +1
Andrew Shepherd
Link mit Anweisungen zum Aktivieren von 32-Bit-Anwendungen: blogs.msdn.com/b/rakkimk/archive/2007/11/03/…
Brandon S
15
Es ist möglicherweise erwähnenswert, dass diese AppPool-Lösung nur für ASP.NET-Anwendungen gilt. Dies kann einige Entwickler verwirren, die ASP.NET oder IIS nie verwendet / konfiguriert haben.
Galaktor
behebt es nicht in IIS7 nur in IIS7.5
FlavorScape
120

Ich habe die Lösung gefunden. Ich habe kürzlich meinen Computer auf Windows 2008 Server 64-Bit aktualisiert. Der Namespace SqlServer.Replication wurde für 32-Bit-Plattformen geschrieben. Alles, was ich tun musste, um es wieder zum Laufen zu bringen, war, die Zielplattform in den Project Build-Eigenschaften auf X86 zu setzen.

Glatzkopf
quelle
Ich habe dieses Problem mit einer DLL, aber mein Projekt> HDP-Eigenschaften ... hat keine Registerkarte "Erstellen" (anscheinend alles andere als, aber nicht das). Sowohl die Registerkarten Kompilieren als auch Debuggen haben eine Dropdown-Liste "Plattform", aber das einzige Element in der Dropdown-Liste ist in beiden Fällen "Aktiv (Beliebige CPU)".
B. Clay Shannon
Ich bin zufällig auf das Gegenteil des obigen Problems gestoßen. Ich hatte alles in 64 Bit laufen und mein Build-Ziel war jede CPU. Als ich dies auf 64-Bit änderte, funktionierte es einwandfrei :)
Madhurya Gandi
87

Ändern Sie den Wert für Platform Target auf der Eigenschaftsseite Ihres Webprojekts in Any CPU.

Geben Sie hier die Bildbeschreibung ein

p.campbell
quelle
Hat leider keine Wirkung.
Jonathan
4
Ich habe mich geirrt - das hat funktioniert, nachdem ich alle meine "Bin" -Ordner entfernt hatte. Vielen Dank!
Jonathan
Auch mein Problem wurde behoben, aber erst nachdem dies für JEDES Projekt in meiner Lösung getan wurde. Die genannten Schritte gelten für C # -Projekte. Ändern Sie für VB.NET-Projekte Projekteigenschaften> Kompilieren> Erweiterte Kompilierungsoptionen> Ziel-CPU in "AnyCPU"
Francois Botha
6
In meinem Fall zielte das Projekt bereits auf "Beliebige CPU". Aber ich verwende 64-Bit-Windows und habe versucht, einen Hardwaretreiber der alten Schule zu importieren. Das Ändern des Ziels auf x86 hat es für mich behoben.
Bsegraves
In meinem Fall wollte ich unter x64 laufen. Es hat nicht funktioniert. Nachdem ich alle Empfehlungen geändert hatte, musste ich auch den 'Zeugen' im Web auch auf x64
SKCS Kamal
52

Gehen Sie zu IIS -> Anwendungspool -> Erweiterte Einstellungen -> 32-Bit-Anwendungen aktivieren

Harpal
quelle
Clay, welche IIS-Version verwenden Sie?
Harpal
23

Wir hatten kürzlich das Problem, als wir versuchten, den Code in Visual Studio auszuführen. In diesem Fall müssen Sie
WERKZEUGE> OPTIONEN> Projekte und Lösungen> WEBPROJEKTE ausführen und die Option "64-Bit-Version von IIS Express für Websites und Projekte verwenden" aktivieren.

Justin
quelle
1
Das hat letztendlich bei mir funktioniert. Besonders für Leute, die versuchen, die Web-API mit Service Fabric-Bibliotheken zu debuggen !!! Wenn Sie in Ihrem Projekt Service Fabric-DLLs verwenden, stellen Sie sicher, dass Sie die oben genannte Lösung verwenden.
Chris Dutra
Dies ist die EINZIGE Lösung, die für mich funktioniert hat. Vielen Dank. : D
Jeremy Styers
Arbeite auch für mich!
Cù Đức Hiếu
11

Für diejenigen, die diesen Fehler in einem ASP.NET MVC 3- Projekt in Visual Studio selbst erhalten:

In einer ASP.NET MVC 3-App, an der ich arbeite, habe ich versucht, einem Projekt einen Verweis auf Microsoft.SqlServer.BatchParser hinzuzufügen, um ein Problem zu beheben, bei dem es auf einem Bereitstellungsserver fehlte. (Unsere App verwendet SMO. Die richtige Lösung bestand darin, SQL Server Native Client und einige andere Dinge auf dem Bereitstellungsserver zu installieren.)

Selbst nachdem ich den Verweis auf BatchParser entfernt hatte, wurde auf jeder von mir geöffneten ASP.NET MVC 3-Seite immer wieder der Fehler "Es wurde versucht ..." angezeigt, der auf die BatchParser-DLL verweist, und auf diesen Fehler folgten Dutzende von Seitenanalysen Fehler.

Führen Sie in diesem Fall eine Dateisuche durch und prüfen Sie, ob sich die DLL noch in einem der Ordner \ bin Ihres Projekts befindet. Selbst wenn Sie eine Neuerstellung durchführen, löscht Visual Studio nicht unbedingt alles in all Ihren \ bin-Ordnern. Als ich die DLL aus dem Bin löschte und erneut erstellte, verschwand der Fehler.

Ryan Lundy
quelle
Ich habe gerade eine Neuerstellung durchgeführt und das Problem wurde behoben, ohne dass die DLL manuell gelöscht werden musste. Vielen Dank!
Trevor
4

Ich hatte dies in einer MVC5-App in Windows 10 gegen IIS Express. Meine Lösung war folgende:

  • Werkzeuge =>
    • Optionen =>
      • Projekte und Lösungen =>
        • Webprojekte =>
          • Verwenden Sie die 64-Bit-Version von IIS Express für Websites und Projekte
Krillgar
quelle
3

Ändern Sie es in 32-Bit (true), es funktioniert

Wenn Sie diese Länge erhalten, kann sie nicht kleiner als Null sein. Parametername: Längenproblem bei der Konfiguration des iis-Servers Ändern Sie einfach die Verbindungszeichenfolge in der Datei web.config wie Ihren SQL-Servernamen und den Servernamen und starten Sie iis neu. Versuchen Sie dann, die funktionierende Seite zu laden

Munwar Shaiik
quelle
2

Wenn Sie bei Fehlern in Visual Studio 2012 veröffentlichen, deaktivieren Sie die Option "Während der Veröffentlichung kompilieren" im Veröffentlichungsassistenten.

Deaktivieren Sie "Vorkompilieren während der Veröffentlichung".

SushiGuy
quelle
0

Klicken Sie in der Windows-Formularanwendung mit der rechten Maustaste auf Projekt-> Eigenschaften-> Erstellen-> Aktivieren Sie das Kontrollkästchen 32-Bit bevorzugen. Vielen Dank an alle

Amirhossein Yari
quelle
0
  1. Löschen Sie das temporäre Testverzeichnis hier C: \ Benutzer (Benutzer) \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \

  2. Setzen Sie alle Projekte in Visual Studio auf x64

  3. Setzen Sie die Standardprozessorarchitektur auf x64 (Test / TestSettings / Standardprozessorarchitektur).

Stellen Sie sicher, dass Sie die Lösungsdatei sauber erstellen. Hoffentlich hilft das!

Madhurya Gandi
quelle
0

Das Ändern des Zielframeworks in den Projekteigenschaften von .NET Framework 4.7.1 auf 4.6.2 hat bei mir funktioniert.

Sussexrick
quelle