我已经仔细研究过,无法找到有关更改程序集中托管资源的任何信息(请注意,我已经熟悉Win32资源和用于更改这些资源的API)。
我的应用程序具有需要由最终用户更新的资源,并且应用程序将作为单个可执行文件分发(因此我不能仅使用附属程序集)。
我看到了一些可能的解决方法,但它们看起来像是hackish:
第一个是使用ILMerge:我在内存中创建一个包含新资源的新程序集,并使用ILMerge将其与原始程序集组合以形成新程序。唯一的缺点是资源无法更新或删除。
第二个有点类似:会有一个.netmodule(来自C#编译器),它与al.exe一起使用/ embed开关运行,以添加资源以形成新程序集。缺点是原始组件中没有任何资源存在。
我倾向于ILMerge选项,但重新分配的条款含糊不清。 EULA没有提及再分配权(所以我在这个否定自由社会中假设它是允许的)但微软研究页面说不允许重新分配(但它的措辞含糊不清,从我可以说它可能指的是商业再分配,这不适用于我,因为这是一个非盈利的GPL项目。)
由于
答案 0 :(得分:1)
你们的集会签了吗?您必须在更改后重新签名,您的私钥被公开,每个人都可以签署您的申请。所以签署它并不值得,无论如何你都有安全风险。
将资源移至外部文件。您仍然可以嵌入“预定义”资源。 首次启动应用程序时,您将创建外部文件并将嵌入的资源复制到外部文件。如果外部文件存在,则不再关心嵌入的资源。