无法加载文件或程序集...或其依赖项之一.尝试加载格式不正确的程序(.resx文件)

Dan*_*Dan 36 .net visual-studio-2010 visual-studio

我在Windows 7 64位上编译或尝试运行我的应用程序时收到以下错误消息.我浏览过互联网,很多人都有同样的错误信息.但是,没有一种解决方案可以解决我的问题或情况.我正在使用Visual Studio 2010.

错误信息

错误38无法加载文件或程序集'file:/// D:/ Projects/Windows Projects/Weld/Components/FileAttachments/FileAttachments/FileAttachments/bin/x86/Debug/FileAttaching.dll'或其依赖项之一.尝试加载格式不正确的程序.第1212行,第5位.D:\ Projects\Windows Projects\Weld\Weld\Weld.UI\frmMain.resx 1212 5 Weld.UI

描述

好的,所以我有两个项目,一个UI项目和一个FileAttachment项目.UI项目引用了FileAttachment项目.当我在"任何CPU"模式下编译UI项目时,一切正常,它运行.当我编译时,我认为'任何CPU'将以64位模式运行,因为那是我正在使用的平台.

我想运行/编译为x86,所以我尝试这样做.我将所有项目的配置更改为x86,并验证这些配置是否正在编译为x86.我编译并得到如上所述的错误.

我觉得很奇怪,它编译并在64位但不是32位工作正常.但是,当编译并作为"任何CPU"部署到用户时,如果这些用户拥有x86,它仍然可以正常工作,没有任何问题.我无法在我的电脑上编译或运行x86.同样,我可以编译为任何CPU并部署到32位PC没有任何问题.

这两个项目都没有引用任何64位的DLL文件.这两个项目都经过验证,目标是32位DLL文件和.NET Framework程序集.

我需要在32位模式下本地编译和运行它.我需要JIT编辑/继续等等.

以下是resx文件中导致问题的代码行:

 <data name="ImageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
....{mime data}....
 </data>
Run Code Online (Sandbox Code Playgroud)

验证resx文件是为.NET 2.0生成的,并且仅引用.NET 2.0程序集而不是.NET 4.0版本.

我该如何解决这个问题?我搜索了互联网,发现数百人有相同的错误信息,但问题不同.

J. *_*lay 33

这似乎是带有图像列表的VS 2010错误.见https://connect.microsoft.com/VisualStudio/feedback/details/532584/error-when-compiling-resx-file-seems-related-to-beta2-bug-5252020?wa=wsignin1.0

我能够利用列出的解决方法让它为我工作.


发布者路易斯·麦克在5/12/2010在8:50 AM我发现了同样的问题,仅在64位机器上编译时,特定的项目.SEEMS工作的修复是手动更改图像流中的一个字符每次在设计器中编辑用户控件或表单

          AAEAAAD ///// AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

更改为AAEAAAD ///// AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

也就是说00LjAuMC4w0yLjAuMC4w在该行的末端(00回0Y)


吉姆

  • 建议的编辑将"System.Windows.Forms,Version 4.0.0.0"更改为"System.Windows.Forms,Version 2.0.0.0" (5认同)
  • 另请参阅此Visual Studio博客文章,其中包含推荐的解决方法: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我们选择了解决方法2,选项3,它似乎可以满足我们的需求. (2认同)
  • 谢谢你——这让我发疯了! (2认同)

小智 7

我最简单的解决方案就是进入错误行并将base64更改为base32

<data name="myGUIcontrol.myObj" mimetype="application/x-microsoft.net.object.binary.base32">
... block of binary here
Run Code Online (Sandbox Code Playgroud)

但我希望找到一种方法来防止每次我在设计师中做出改变时都不会发生这种情况.也许这个类的属性迫使VS10使它成为base32 ??

  • 你在这里的修复将允许项目再次编译,但是,我认为你正在通过吞噬错误修复它.例如,您可以将"base64"更改为"base4",这没关系. (4认同)