【问题标题】:How can I extract images from the .resources file created by a decompile of a .NET assembly?如何从反编译 .NET 程序集创建的 .resources 文件中提取图像?
【发布时间】:2011-12-01 00:09:31
【问题描述】:

我正在为我的客户恢复应用程序的源代码。我已经设法使用.NET Reflector 恢复应用程序代码。但现在我想整理代码并重新创建单独的表单,这样我就有了每个表单的代码隐藏、设计器和 resx 文件。问题是所有图像都位于“.resources”文件中。如何从 Reflector 生成的这些“.resources”文件中提取图像?

我更喜欢使用一些工具,而不是必须以编程方式提取图像,但如果我找不到合适的应用程序,我会求助于代码。所以在这里我希望有人以前做过或知道这些资源文件的查看器(最好是免费的!),这将允许我提取图像。否则,代码也不错;因为我可以编写自己的小应用程序来提取图像。

【问题讨论】:

  • Reflector 也可以这样做,打开程序集的资源节点。右键单击资源并选择另存为。
  • 我尝试用Reflector提取图像,但据我所知,Reflector只保存.resources文件,它不允许您将这些文件中包含的位图保存为BMP格式。 ..除非我错过了什么?当您选择 .resources 文件时,它确实会列出位图,但是当我右键单击位图时,有一个选项“另存为”,不幸的是它是灰色的。也许这是我正在使用的试用版中缺少的付费版本中的一个功能?

标签: c# .net visual-studio resources decompiling


【解决方案1】:

您可以保存 .resources 文件,然后使用 resgen 工具(VS2010 工具的一部分)将其转换回 .resx 文件,使用如下命令行:

resgen foo.resources bar.resx

然后可以将.resx 添加到 C# 项目中。完成此操作后,如果您尝试打开单个图像,VS2010 将提供将它们提取到独立图像文件中。

【讨论】:

【解决方案2】:

【讨论】:

  • 谢谢,sepulka。我测试了您在此处链接的程序,它运行良好。 :) 我还发现了我也使用过的这个程序,jasonhaley.com/blog/post/2005/10/09/…。感谢您对此的帮助。
  • 不幸的是,codeproject 解决方案无法将我构建的项目识别为程序集。 Clive Tong 的回答对我有用。
  • +1 - codeproject.com 项目是旧的(.NET 2.0 VS2008 PRK) - 所以请确保您更新并重新编译到您现在使用的 .NET 版本。在 VS2017 .NET 4.5 中非常适合我。
【解决方案3】:

ILSpy 应该可以完成这项工作 - 请参阅 http://wiki.sharpdevelop.net/ILSpy.ashx 的功能和下面的屏幕截图。

【讨论】:

  • 这仅允许您将资源保存为 .resources 文件。据我所知,它不允许您从资源文件中提取位图图像。
  • 奇怪,截图中每个位图都有一个保存按钮
  • 嗨,Poupou。感谢您尝试提供帮助。是的,该屏幕截图具有欺骗性,让它看起来可以,但实际上它不允许您保存 .resources 文件中包含的图像。就我而言,如果我像屏幕截图中那样选择 resources 文件夹,我会得到一个资源文件列表,就像图像中的第一个条目一样。所以在我的例子中,列出的条目都不是实际的 BMP 文件,而是包含位图的资源文件。如果我在 Reflector 中查看资源文件,我可以看到每个文件包含的位图列表,但无法将这些单独的位图保存到磁盘。
【解决方案4】:

JustDecompile 可以做到这一点。您可以右键单击资源并从上下文菜单中选择保存。

【讨论】:

  • 试过了,不行。它只是将它们显示为字符串System.Byte[]
猜你喜欢
  • 1970-01-01
  • 2013-11-06
  • 2017-05-16
  • 1970-01-01
  • 2012-10-03
  • 2011-01-29
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多