Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否更改.NET可执行后期生成的图标?_.net_Msbuild - Fatal编程技术网

是否更改.NET可执行后期生成的图标?

是否更改.NET可执行后期生成的图标?,.net,msbuild,.net,Msbuild,我有一个.NET应用程序,我生产了几个不同的版本-完全相同的应用程序,但具有不同的“品牌”(启动屏幕、名称等)。我在主可执行文件之外有所有这些差异,所以它们都是在运行时提取的。但是,我无法使用程序图标执行此操作,因为它已烘焙到EXE文件中 我想避免仅仅为了图标而做很多不同的项目。有没有办法修改已生成的.NET EXE的图标?我有一种感觉,在这里可能很方便,但我不确定如何使用分解后的位来更改图标,以便将其输入到ILAsm中 我是否应该使用一个脚本来修改原始项目文件,以使用一个新图标并重新构建整个项

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

我想避免仅仅为了图标而做很多不同的项目。有没有办法修改已生成的.NET EXE的图标?我有一种感觉,在这里可能很方便,但我不确定如何使用分解后的位来更改图标,以便将其输入到ILAsm中

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


或者我可能完全错了,任何建议都将不胜感激。

您可以将exe保留为“未标记”,并将图标作为单独的文件保存。在部署过程中,为应用程序快捷方式使用适当的图标。

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

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

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

我最终需要更改的不仅仅是图标。因此,我使用生成一个存根exe,其中包含引用“real”启动程序集的所有正确位,并只调用它的“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 });

我最终需要改变的不仅仅是图标。因此,我使用生成一个存根exe,其中包含引用“real”启动程序集的所有正确位,并只调用它的“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 });

这是我倾向的选择,但我最终需要改变的不仅仅是图标。因此,我现在使用CodeDom生成一个存根exe,其中包含所有正确的位,这些位将直接调用“real”Main方法。这是我倾向于的选项,但我最终需要更改的不仅仅是图标。因此,我现在使用CodeDom生成一个存根exe,其中包含所有正确的位,这些位将调用“real”Main方法。