首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向动态生成的.NET程序集添加默认图标

向动态生成的.NET程序集添加默认图标
EN

Stack Overflow用户
提问于 2015-02-22 11:37:59
回答 1查看 324关注 0票数 0

我动态地生成一个.NET程序集,并使用两种不同的方法向其添加资源:

  • ModuleBuilder.DefineResource
  • AssemblyBuilder.DefineResource

其中一个资源是一个图标(添加到程序集中的唯一图标),我希望这个图标在Windows中显示为可执行文件的默认图标。使用以下代码,资源可以很好地嵌入,并且可以访问,但不会显示为Windows Explorer中可执行文件的默认图标。

代码语言:javascript
运行
复制
using (var writerIcon = moduleBuilder.DefineResource(nameAssembly.Name + ".Resources.IconMain", "Application resources.", ResourceAttributes.Public))
{
    using (var icon = new Icon(@"Icon.ico"))
    {
        writerIcon.AddResource("Main.ico", icon);
    }

    builderAssembly.Save(@"MyPE.exe", PortableExecutableKinds.ILOnly, ImageFileMachine.I386);
}

代码语言:javascript
运行
复制
using (var writer = assemblyBuilder.DefineResource(nameAssembly.Name + ".Resources.IconMain", "Application resources.", nameAssembly.Name + ".Resources.IconMain", ResourceAttributes.Public))
{
    using (var icon = new Icon(@"Icon.ico"))
    {
        writerIcon.AddResource("Main.ico", icon);
    }

    builderAssembly.Save(@"MyPE.exe", PortableExecutableKinds.ILOnly, ImageFileMachine.I386);
}

我知道.NET程序集处理资源的方式与本机PE不同,但我不确定这是否相关。底线是,我看不出有什么方法可以通过代码来指定这一点。

在Visual中,您可以指定程序集图标,我希望通过托管代码(必要时通过P/Invoke )准确地实现这一点。如有任何指示,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-17 01:52:09

最后,我使用了CodeDom而不是动态程序集生成。这不是个人偏好,但它通过向编译器指定参数,使我能够更好地控制资源和程序集生成选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28657362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档