使用ImageList对象时出现“无法加载文件或程序集...”错误

时间:2011-03-10 19:59:59

标签: c# .net-2.0 assemblies imagelist

以下是错误消息:

  

无法加载文件或程序集   'file:///myFile.dll'或其中一个   依赖。试图做到   加载程序不正确   格式。第171行,第5位。   FrmApproveProfiles.resx

当然该文件不称为“myFile.dll”。奇怪的是,错误显然是在我的一个表单的资源文件中,但是这个表单是主应用程序的一部分,并且与上述DLL文件完全分开。此DLL文件作为文件加载(解决方案中项目的构建)。

当我将图像(任何图像,即png,bmp等)加载到我的表单中的ImageList(在主应用程序中,而不是DLL)时,会发生错误。我知道图像没有被破坏,因为我可以查看它们并在程序的其他地方使用它们,我感到困惑的是为什么我的单独的DLL因为这个没有加载。为什么要关心我加载到其他组件中的内容?

完全被这一个难倒。有人有任何建议或遇到过这个吗?

编辑 - 当我尝试构建解决方案时会发生此错误。构建在调试和释放模式下都失败。

3 个答案:

答案 0 :(得分:7)

解决方法

  1. 在Designer中打开表单并进行所需的GUI更改。关闭设计师并保存
  2. 编译项​​目并收到RESX编译错误(只有带有Imagelist的表单才会出现此问题)
  3. 双击resx编译错误以打开resx文件。
  4. 滚动到图像流的顶部。
  5. 编辑图像流的顶行: AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w 变为AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w

  6. 关闭并保存resx文件并重新编译。

  7. **注意:唯一的区别是结尾j00LjAuMC4wj0yLjAuMC4w

    的字符

    每次在Designer模式下打开表单时都需要这样做。

    同时查看此链接: http://connect.microsoft.com/VisualStudio/feedback/details/532584/error-when-compiling-resx-file-seems-related-to-beta2-bug-5252020

答案 1 :(得分:1)

您已包含的程序集(动态和静态)可以引用其他程序集。偶尔,加载器出错,或者Visual Studio出错,在这种情况下,它有助于清理任何中间文件(Build> Clean)。

如果您无法添加此引用,或者已添加但无法加载,请考虑使用Fusion日志找出它出错的位置。

注1:我一直处于这样的情况,我发现没有任何问题,只是调试器感到困惑。要自己查看,请在Visual Studio外部以发布模式运行项目。

注意2:无法加载程序集也是一个被捕获的异常,但您的调试器无论如何都会显示它(检查Debug> Exceptions下的设置,以及Options> Debugging)。

编辑:从上面的评论来看,这似乎只是一个64位问题,在this bug-report from Microsoft(信贷Florian Gerhardt)中解释过。我将留下这个答案,因为它可能用于类似场景的一般故障排除。

答案 2 :(得分:0)

如果对装配加载问题有疑问,请查看fusion logs