我正在使用Visual Studio 2008在Windows 7 64位开发。我有一个Class库的集合,我将使用ilmerge合并到单个DLL中。但是,当我尝试使用这个合并的DLL时,我得到

[ badimageformforatexception :无法加载文件或程序集'mymergeddll'或其依赖项之一。尝试以错误的格式加载程序。]

我一直在寻找解决这个问题,它看起来像我需要在mymergeddll的每个项目中设置构建属性,以瞄准x86,所以我这样做了。我还在Web服务中设置了所有非MSTEST项目,在其中我将MyMergedDLL引用为目标x86。但是,我仍然收到这个错误。

如果此博客条目< / a>是被认为的,我可以在做出这样做的结果:

public class SpecificClass: BaseClass: where T : class { }
.

是,在通用上具有类约束。博客条目来自2007年,所以我不知道仍然适用。我想要一些来自stackoverflow的输入,就像在我去追踪我的项目中的每个通用类以检查约束之前,你认为这个问题是什么。

如果它很重要,mymergeddll是强的名字签名。我正在尝试在控制台应用程序和Web服务中使用MyMergedDll。我不知道是否可能在每次重建Web服务时更新IIS是否可能复杂。使用控制台应用程序,当我在释放模式下构建时,我似乎只获取了BadImageFormatException

有帮助吗?

解决方案

我搞定了,我认为这是从做两件事:

    mymergeddll是用我控制过来的几个其他组件构建的,但这些程序集未设置为目标x86。我重建了针对x86的那些装配块,重建组成mymergeddll的程序集,并重新合并这些组装以形成mymergeddll的新副本。
  1. 使用mymergeddll的控制台应用程序在调试模式下设置为目标x86,但不是释放模式,因此它将在调试模式下工作,但为释放模式提供生成的BadImageFormatException
  2. 第一件事可能是必要的。我想我只需要MyMergeddll的消费者在释放模式下瞄准x86。我从来没有找到我正在使用的ilmerge版本的版本,所以我刚刚用最新的MSI重新安装它,我可以在微软网站上找到。

其他提示

您是否仔细检查了您使用的ilmerge版本?

我问是因为旧的,错误的aspnet_merge版本(基本上与其他东西中的DLL相同合并)导致我们在描述的问题上。在回答时,我进入了一些细节在那里。

可能值得快速查看ILDASM中的DLL(当试图对这些坏DLL分解时,反射器往往会崩溃 - 也许是不知情的),看看你是否可以制定腐败点以及对应于腐败的点您的代码可能会在问题上阐明。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top