【问题标题】:Using reflection to update embedded resource in an assembly?使用反射更新程序集中的嵌入式资源?
【发布时间】:2012-04-12 08:42:53
【问题描述】:

我有一个内嵌资源的 exe 文件。我需要编写另一个应用程序来打开 exe,更新它的资源并将其保存为有效的可执行文件。 (我无法重新编译它,因为运行它的机器可能没有可用的源代码)。

这是否可能以及如何(我需要一个想法或可能是一个链接,而不是要求一个完整的解决方案)?

编辑:我需要更新的程序集是 .NET 3.5 程序集。

【问题讨论】:

  • 你不想在其他地方存储资源吗?即使你找到了办法,这听起来也是个坏主意。
  • 您指的是“本机资源”还是 .NET 资源? IIRC他们是不同的。第一个是XN Resource Editor,它带有源代码。
  • 当我进行更新时,我只是将整个可执行文件替换为新版本。为什么你需要走漫长的修改和重新编译的路线?
  • @Ales,是的,我宁愿把它分开(这样我根本不会有问题),但管理层坚持认为它是一个嵌入式资源......
  • @Amicable 它将运行的机器可能没有源代码或原始程序集(或任何开发工具),因此他们无法重新编译它。

标签: c#


【解决方案1】:

我想您可以在程序集中添加一个新类,其中包含将操纵这些资源的嵌入式资源。然后使用反射调用操作方法。我的意思是这样的:

/*The program which has embedded resources*/
public static class ResourceManager
{
     public static void ChangeResource1(Base64 newResource);
     /*** Other methods***/
}

/*The program that modifies resources*/
MethodInfo[] method = typeof(ResourceManager).GetMethod(ChangeResource1);
method.Invoke(someNewData);

不确定它是否会起作用......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 2013-12-29
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多