8

当我尝试运行安装程序来设置服务时,我遇到了以下异常:

# ./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.

初始化安装时发生异常:

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..
4

3 回答 3

19

您必须使用正确版本的 InstallUtil。如果您尝试安装 32 位服务 (x86),请使用

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

如果您要安装 64 位服务 (x64),请使用

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

请注意,最后指定的文件夹 (v4.0.30319) 可能与机器不同。如果您只有旧版本的框架可用,您可能会遇到以下文件夹之一 - v1.0.xxxx、v1.1.xxxx、v2.0.xxxxx、v3.0、v3.5。

于 2013-10-23T12:54:27.487 回答
3

这通常表示 32 位和 64 位不匹配。例如,如果Wrapper.exe编译为 x86 并且您使用 64 位安装它,则InstallUtil该进程无法加载 32 位Wrapper.exe程序集并会抛出BadImageFormatException.

解决方案是使用.NET 文件夹InstallUtilFramework(not ) 子文件夹中的 32 位(例如,如果您使用的是 .NET 4 或 4.5)。Framework64C:\Windows\Microsoft.NET\v4.0.30319\Framework

于 2013-10-23T12:55:59.273 回答
3

我同意这里的一切!如果您尝试以无效的操作系统格式加载您的应用程序或重新安装的程序集之一,则会出现此错误。

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

  • 检查您的操作系统格式?x86 或 x64
  • 检查您的项目构建配置?
  • 检查所有重新安装的组件(非常重要),如果您加载的重新安装(DLL)之一以错误的格式构建,您也会收到此错误(如果我错了,请纠正我!)。
  • 如果可能,将您的 VS 构建配置更改为 AnyCpu。

Microsoft 创建了一个名为 CorFlags 的有用工具,可用于显示或设置托管程序集的目标平台。

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

语法:
CorFlags 文件名

**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 
于 2013-10-23T13:05:14.733 回答