2013-10-23 16 views
5

io sono sempre al di sotto di eccezione quando si tenta di eseguire programma di installazione per configurare il servizio: si è verificatoSystem.BadImageFormatException durante l'installazione del servizio

# ./InstallUtil ../../../../Applications/GasPosApp/bin/Wrapper.exe -s ../../../ 
../Applications/GasPosApp/properties/DispenserViewerApplication.wrapper.conf 
Microsoft (R) .NET Framework Installation utility Version 4.0.30319.1 
Copyright (c) Microsoft Corporation. All rights reserved. 

eccezione durante l'inizializzazione l'installazione:

System.BadImageFormatException: Could not load file or assembly 'file:///C:\Appl 
ications\GasPosApp\bin\Wrapper.exe' or one of its dependencies. The module was e 
xpected to contain an assembly manifest.. 
+1

Questa eccezione viene generata quando si mescolano 32 e Assiemi a 64 bit. Prova a compilare tutti i progetti in AnyCPU. – Damien

+0

Sto solo eseguendo questo dal prompt dei comandi. potresti per favore fino a come superare questo? – user1280096

+0

@ user1280096 Hai tutte le informazioni di cui hai bisogno nelle risposte. Basta usare l'altra versione di InstallUtil e starai bene. –

risposta

9

Devi usare la versione corretta di InstallUtil. Se si sta tentando installare un servizio di 32 bit (x86), utilizzare

c:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe 

e se si sta installando un servizio di 64 bit (x64), utilizzare

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe 

nota, che l'ultima cartella specificata (v4.0.30319) può differire da una macchina alla macchina. Se si dispone solo di una versione precedente del framework disponibile, è possibile incontrare una delle seguenti cartelle: v1.0.xxxx, v1.1.xxxx, v2.0.xxxxx, v3.0, v3.5.

+0

Sto utilizzando c: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe per installare il servizio a 32 bit. – user1280096

+0

@ user1280096 E si ottiene ancora quell'errore? Io non la penso così Per favore, verifica che i tuoi servizi siano veramente a 32 bit. –

+0

sì, è davvero 32 bit ... – user1280096

2

Ciò è spesso un'indicazione di una mancata corrispondenza tra 32 e 64 bit. Per esempio, se Wrapper.exe è compilato come x86 e si installa utilizzando il 64 bit InstallUtil il processo non può caricare il 32 bit Wrapper.exe montaggio e getterà un BadImageFormatException.

La soluzione è quella di utilizzare il 32 bit InstallUtil posto nel Framework (non Framework64) sottocartella della cartella .NET (per esempio C:\Windows\Microsoft.NET\v4.0.30319\Framework se si utilizza .NET 4 o 4.5).

+0

Sì, sto usando il framework non framework64. – user1280096

+0

Sto usando .NET 4. – user1280096

3

Sono d'accordo con tutti qui! Questo errore si verifica se si sta tentando di caricare l'applicazione o uno degli assembly riconfigurati in un formato di sistema operativo non valido.

http://msdn.microsoft.com/en-us/library/system.badimageformatexception(v=vs.80).aspx

  • Controlla vostra disposizione di sistema opearting? x86 o x64
  • Verificare la configurazione della build del progetto?
  • Controllare tutti assebmlies refreanced (MOLTO IMPORTENET) se uno dei vostri refreances caricati (DLL) è costruito in formato sbagliato otterrete questo errore anche (correggetemi se sbaglio!).
  • Se possibile, modificare la configurazione di VS buid in AnyCpu.

Microsoft ha creato uno strumento utile chiamato CorFlags che può essere utilizzato per mostrare o impostare la piattaforma di un assembly gestito.

C: \ Program Files \ Microsoft.NET \ SDK \ v2.0 \ Bin \ CorFlags.exe

Sintassi:
CorFlags nome

**anycpu** 
Version : v4.0.30319 
CLR Header: 2.5 
PE  : PE32 
CorFlags : 1 
ILONLY : 1 
32BIT  : 0 
Signed : 0 

**x86** 
Version : v4.0.30319 
CLR Header: 2.5 
PE  : PE32 
CorFlags : 3 
ILONLY : 1 
32BIT  : 1 
Signed : 0 

**x64** 
Version : v4.0.30319 
CLR Header: 2.5 
PE  : PE32+ 
CorFlags : 1 
ILONLY : 1 
32BIT  : 0 
Signed : 0 
Problemi correlati