当我尝试运行安装程序来设置服务时,我遇到异常:
# ./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..
答案 0 :(得分:12)
您必须使用正确版本的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)可能与机器不同。如果您只有该框架的oldere版本,则可以遇到以下文件夹之一 - v1.0.xxxx,v1.1.xxxx,v2.0.xxxxx,v3.0,v3.5。
答案 1 :(得分:3)
我同意这里的一切!如果您尝试以无效的操作系统格式加载应用程序或其中一个refreanced程序集,则会出现此错误。
http://msdn.microsoft.com/en-us/library/system.badimageformatexception(v=vs.80).aspx
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
答案 2 :(得分:2)
这通常表示32位和64位之间不匹配。例如,如果将Wrapper.exe
编译为x86并使用64位InstallUtil
安装它,则进程无法加载32位Wrapper.exe
程序集并将抛出BadImageFormatException
。
解决方案是使用位于.NET文件夹的InstallUtil
(非Framework
)子文件夹中的32位Framework64
(例如C:\Windows\Microsoft.NET\v4.0.30319\Framework
,如果您正在使用的话。 NET 4或4.5)。