加载程序集失败,原因是格式不正确。

4
我在一个相当大的Windows Forms .NET(C#)应用程序上开发,其中包含几个程序集。最初,每个程序集都是为“任何CPU”目标平台构建的。 由于在x64机器上使用Crystal Reports时出现问题,我们不得不将整个项目构建为x86目标平台。我开始为x86重建一些项目,并且效果非常好。 但是,有一个问题,当我尝试在另一个程序集中使用它作为引用时,其他程序集无法加载它,会出现以下错误:
“无法加载文件或程序集#MyAssembly#或其某个依赖项。尝试加载格式不正确的程序。”
在使用多个程序集的示例项目中尝试使用Crystal时,我发现当项目针对不同的目标平台构建时,就会出现此错误。但这在这里并不是问题所在。我为每个项目构建X86,但无法弄清楚问题出在哪里。

你是否检查了任务管理器,确认你的应用程序实际上是以32位模式运行的? - testalino
1个回答

6

您可以尝试使用目标平台“x86”或“x64”来构建您的主项目(可执行文件),并将所有其他项目设置为“Any CPU”。


是的,这个不起作用。似乎在为任何CPU构建的应用程序中无法包含为x86构建的程序集。(至少这是我的经验) - Robert
1
@Robert Spari:只有你的MainProject(WindowsForms)和Main-Methode应该使用“x86”编译。所有其他项目(Library)都应该使用“Any CPU”编译。 - Jehof
非常抱歉,你是完全正确的,我只是把它交给测试了。非常感谢。 - Robert
这个可行。可能与此相关:http://blogs.msdn.com/b/visualstudio/archive/2010/06/19/resgen-exe-error-an-attempt-was-made-to-load-a-program-with-an-incorrect-format.aspx - JYelton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接