Ich versuche, einen Windows-Dienst mit InstallUtil.exe zu installieren, und erhalte die Fehlermeldung
System.BadImageFormatException: Datei oder Assembly '
{xxx.exe}
' oder eine ihrer Abhängigkeiten konnte nicht geladen werden . Es wurde versucht, ein Programm mit einem falschen Format zu laden.
Was gibt?
BEARBEITEN: (Nicht von OP) Vollständige Nachricht aus dup extrahiert, die viel mehr Treffer erhält [für googleability]:
C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> InstallUtil.exe C: \ xxx.exe Microsoft (R) .NET Framework-Installationsdienstprogramm Version 4.0.30319.1 Copyright (c) Microsoft Corporation. Alle Rechte vorbehalten.
Beim Initialisieren der Installation ist eine Ausnahme aufgetreten: System.BadImageFormatException: Datei oder Assembly 'file: /// C: \ xxx.exe' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Es wurde versucht, ein Programm mit einem falschen Format zu laden.
Stellen Sie sicher, dass das neueste Framework (das, mit dem Sie Ihre App kompiliert haben) das erste im PATH ist. Das hat das Problem für mich gelöst. (Gefunden in einem Forum )
quelle
Ich denke, Sie verwenden die 64-Bit-Version des Tools, um eine 32-Bit-Anwendung zu installieren. Ich habe mich heute auch mit diesem Problem befasst und diesen Framework-Pfad verwendet, um Abhilfe zu schaffen.
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
und es sollte Ihre 32-Bit-Anwendung gut installieren.
quelle
Der Schlüssel besteht darin, Übereinstimmungsprozessoreinstellungen für das Projekt festzulegen, die sich an zwei Stellen befinden.
Stellen Sie außerdem sicher, dass die Architektureinstellungen im Menü Test >> Testeinstellungen >> Standardprozessorarchitektur >> identisch sind (siehe unten).
Dies gilt für VS2013, möglicherweise jedoch auch für andere Versionen.
Update - Für VS2019:
quelle
OK, das ist das Problem, das ich hatte, und was es behoben hat, scheint für das oben Gesagte sehr relevant zu sein.
Ich verwende Visual Studio 2010 Express. Ich habe einen Testdienst geschrieben, der eigentlich nichts getan hat. Es war nur Übung für die reale Sache später.
Ich habe den Dienst geschrieben und versucht, ihn mit zu installieren,
installutil.exe
und habe den folgenden Fehler erhalten:Soweit das gleiche wie der ursprüngliche Autor.
Rubens obige Beobachtung über die 32-Bit-Ausgabe von Visual Studio 2010 war hier der Retter.
Ich habe die 64-Bit-Version von verwendet
installutil.exe
und die Ausgabe des Visual Studio 2010-Builds war 32-Bit. Um hier einen kleinen Mehrwert zu erzielen, finden Sie die 32-Bit-Version des neuesten .NET-Frameworks und das zugehörigeinstallutil.exe
im Ordner C: \ Windows \ Microsoft.NET \ Framework . Mit dieser Version wurdeinstallutil.exe
mein Problem behoben; Der Service ist reibungslos installiert!Ich hoffe, das hilft jemand anderem da draußen.
quelle
Nachdem ich alle genannten Lösungen ausprobiert hatte, fand ich die
PlatformTarget
irgendwie zurAnyCPU
Konfiguration hinzugefügte .csproj.Das Entfernen der Leitung hat bei mir funktioniert.
quelle
Processor Architecture for AnyCPU Projects
) ausprobiert haben, funktioniert alles wieder.Ich hatte dieses Problem mit einem WinForms-Projekt mit VS 2015. Meine Lösung war:
quelle
Ich hatte das gleiche Problem. Ich benutze den Standardbefehl zur Ausführung. Es wurde der X64 Ro-Lauf gegen X86-Tests aufgerufen. Ich musste den X86 und nicht die X64-Version des Nunit-Runners angeben.
quelle
Zusammenfassend muss sowohl Build als auch Project \ Build \ Platform auf x64 festgelegt werden, um den 64-Bit-Dienst erfolgreich auf einem 64-Bit-System zu installieren.
quelle
Mein Problem war anders. Dies geschah nach einem unerwarteten Herunterfahren meines Windows 7-Computers. Ich habe eine saubere Lösung durchgeführt und sie lief wie erwartet.
quelle
Wenn diese Meldung in Live-Tests , jedoch nicht in Komponententests angezeigt wird , werden ausgewählte Assemblys im laufenden Betrieb nach kopiert
$(SolutionDir)\.vs\$(SolutionName)\lut\0\0\x64\Debug\
. Manchmal können jedoch nur wenige Assemblys nicht ausgewählt werden , z. B. VC ++ - DLLs bei Interop-C ++ / C # -Projekten.Nach dem Erstellen
xcopy
wird das Problem nicht behoben, da die kopierte Datei von der Live-Test-Engine gelöscht wird.Die einzige bisherige Problemumgehung (28. Dezember 2018) besteht darin, Live-Tests zu vermeiden und alles in Komponententests mit dem Attribut durchzuführen, das
[TestCategory("SkipWhenLiveUnitTesting")]
auf die Testklasse oder die Testmethode angewendet wird.Dieser Fehler tritt in jedem Visual Studio 2017 bis 15.9.4 auf und muss vom Visual Studio-Team behoben werden.
quelle
Zielerstellung x64 Zielserver Hosting IIS 64 Bit
Klicken Sie mit der rechten Maustaste auf appPool-Hosting, auf dem die Website / Webanwendung ausgeführt wird, und setzen Sie die 32-Bit-Aktivierungsanwendung auf false.
quelle
Ich habe mich heute diesem Problem gestellt. In meinem Fall wurde das Plattformziel meiner Anwendung (mit einem Verweis auf eine 64-Bit-DLL) festgelegt,
AnyCPU
aber dasPrefer 32-bit
Kontrollkästchen im Abschnitt Plattformziel wurde standardmäßig aktiviert. Dies war das Problem und funktionierte einwandfrei, nachdem diePrefer 32-bit
Option deaktiviert wurde .quelle
Wir haben eine andere Lösung für ein Problem mit demselben Symptom gefunden:
Wir haben diesen Fehler gesehen, als wir das Projekt von .net 4.7.1 auf 4.7.2 aktualisiert haben.
Das Problem war, dass System.Net.Http zwar nicht mehr im Projekt referenziert wurde, es jedoch im Abschnitt "DependableAssembily" unserer web.config aufgeführt war. Das Entfernen dieser und anderer nicht verwendeter Assemblyreferenzen aus der web.config löste das Problem.
quelle
Das Problem ist, dass alle,
System.BadImageFormatException: Could not load file or assembly
einschließlich derjenigen, die überhaupt nicht zugeordnet sind,installutil.exe
auf genau diesen Thread verweisen.Wenn Ihr Problem mit
WindowsBase
oderPresentationFramework
DLLs zusammenhängt und Sie Analysatoren installiert haben, stellen Sie sicher, dass diese entweder für alle Projekte in Ihrer Lösung oder für keines von ihnen installiert sind.Verweisen Sie auf das gesamte Framework in der
.csproj
Datei Ihrer Bibliothek und nicht nur auf die beidendlls
:Entfernen
bin
undobj
dirs, saubere Lösung und wieder aufbauen.quelle