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

编译或试图在Windows 7 64位上运行我的应用程序时收到以下错误消息。 我search了互联网,很多人都有相同的错误信息。 但是,这些解决scheme都不能解决我的问题或情况。 我正在使用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,所以我试图做到这一点。 我将所有项目的configuration更改为x86,并validation这些configuration是否正在编译为x86。 我编译并得到如上所述的错误。

我觉得很奇怪,它在64位但不是32位编译和工作正常。 但是,当编译和部署到用户作为“任何CPU”,如果这些用户有x86的,它仍然适用于他们没有任何问题。 我只是不能编译或运行在我的电脑上的x86。 再次,我可以编译为任何CPU并部署到32位PC没有任何问题。

这两个项目都没有引用任何64位DLL文件。 这两个项目都经过validation是针对32位的DLL文件和.NET Framework程序集。

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

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

<data name="ImageList1.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> ....{mime data}.... </data> 

validationresx文件是为.NET 2.0生成的,仅引用.NET 2.0程序集而不是.NET 4.0版本。

我该如何解决这个问题? 我search了互联网,并find了数百人有相同的错误信息,但一个不同的问题。

这似乎是一个与图像列表VS 2010年的错误。 请参阅https://connect.microsoft.com/VisualStudio/feedback/details/532584/error-when-compiling-resx-file-seems-related-to-beta2-bug-5252020?wa=wsignin1.0

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


发布者Luis Mack于2010年5月12日上午8时50分我已经find了同样的问题,只在一个特定的项目,当在64位机上编译。 SEEMS工作的一个修复是手动修改图像stream中的一个字符每当用户控件或窗体在devise器中编辑

AAEAAAD ///// AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w

更改为AAEAAAD ///// AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

那就是00LjAuMC4w回到0yLjAuMC4w的行尾(00回到0y)


吉姆

我最简单的解决办法是进入错误的行,并将base64更改为base32

 <data name="myGUIcontrol.myObj" mimetype="application/x-microsoft.net.object.binary.base32"> ... block of binary here 

但我想find一种方法来防止每当我在devise师做出改变时发生。 也许是强制VS10使它成为base32的类的一个属性?

我遇到了一个与我的程序相同的问题。 问题是由于某些原因,Visual Studio似乎为某些GUI控件属性生成了64位数据块,因此在编译到x86时无法加载。

在我的情况下,我能够通过删除resx文件中的problamatic数据块以及引用这些块的cs.designer文件中的行代码行来解决此问题。 我能够做到这一点,因为分配引用属性的相应源代码行是多余的,不需要。 唯一令人讨厌的是我每次修改devise器中的任何东西时都必须重做这些修复程序,因为Visual Studio会在错误的代码中添加回来。

上周我们遇到了同样的问题,我们find了一个很好的解决方法。

您必须在Designer中打开.resx文件,并将accessmodifier从public设置为no code generation。