更改.NET可执行文件后期构建的图标?

时间:2009-03-23 21:16:24

标签: .net msbuild

我有一个.NET应用程序,我生成了几个不同的版本 - 完全相同的应用程序,但具有不同的'品牌'(闪屏,名称等)。我在主可执行文件之外有所有这些差异,所以它们在运行时被选中。但是,我无法使用程序图标执行此操作,因为它已烘焙到EXE文件中。

我想避免为图标制作许多不同的项目。有没有办法可以修改已经构建的.NET EXE的图标?我有一种感觉ILDASM.exeILAsm.exe在这里可能很方便,但我不知道如何处理反汇编的位来更改图标,准备将其输入ILAsm。

我是否应该使用修改原始项目文件的脚本来使用新图标并重新构建整个项目?

或者我可能完全以错误的方式解决这个问题,任何建议都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

您可以将exe保留为“无品牌”,并将图标保存为单独的文件。在部署期间,使用适用于应用程序快捷方式的图标。

答案 1 :(得分:0)

查看ResHacker.exe或XN资源编辑器。我没有使用过XN资源编辑器,但是使用了ResHacker来更改PE中的图标资源。

答案 2 :(得分:0)

我最终需要更改的不仅仅是图标。所以我使用CodeDom生成一个存根exe文件,其中所有正确的位都引用了“真正的”起始程序集,只是调用它的'main'版本。

为此设置正确的图标只需使用

var compilerParams = new CompilerParameters
{
  GenerateExecutable = true,
  CompilerOptions = string.Format("/target:winexe /win32icon:\"{0}\"", iconPath)
  // ... other options ...
}

致电时:

var codeProvider = new CSharpCodeProvider();
codeProvider.CompileAssemblyFromSource(compilerParams, new[] { sourceCode });