【发布时间】:2011-03-18 00:18:29
【问题描述】:
我正在使用 Visual Studio 2008 在 64 位 Windows 7 中进行开发。我有一组类库,我使用 ILMerge 将它们合并到一个 DLL 中。但是,当我尝试使用这个合并的 DLL 时,我得到了
[BadImageFormatException: 无法加载文件或程序集“MyMergedDll”或其依赖项之一。试图加载格式不正确的程序。]
我一直在寻找这方面的帮助,看起来我需要将 MyMergedDll 中每个项目中的 Build 属性设置为以 x86 为目标,所以我这样做了。我还在 Web 服务中设置了所有非 MSTest 项目,其中我将 MyMergedDll 引用为目标 x86。但是,我仍然收到此错误。
如果this blog entry 是可信的,我会因为这样做而得到这个错误:
public class SpecificClass: BaseClass: where T : class { }
也就是说,对泛型具有类约束。不过,博客条目是 2007 年的,所以我不知道这是否仍然适用。在我追踪项目中的每个泛型类以检查约束之前,我想从 StackOverflow 获得一些关于你们认为问题所在的意见。
如果重要,MyMergedDll 是强名称签名的。我正在尝试在控制台应用程序和 Web 服务中使用 MyMergedDll。我不知道每次重建 Web 服务时 IIS 是否都在更新,这是否会使事情变得复杂。使用控制台应用程序,我似乎只在以发布模式构建时获得BadImageFormatException。
【问题讨论】:
-
您能否澄清几点: 1. 您是否在运行 ILMerge 时或在应用程序执行期间收到错误?
-
单个项目 DLL 与 ILMerge 很好地合并。使用合并的 DLL 的控制台应用程序和 Web 服务构建良好。当我 a) 运行我的控制台应用程序或 b) 访问运行 Web 服务的 Web 服务器上的 .asmx 文件时,我得到了错误。
标签: .net generics 64-bit ilmerge badimageformatexception