为每个构建配置设置不同的ApplicationIcon

Gra*_*ier 6 c# icons csproj visual-studio-2010

我试图为我的 C# 项目的每个构建配置设置不同的图标(使用 VS 2010 pro)。一个配置适用于不同的客户,因此该配置应使用不同的图标。

我不确定为什么这在 csproj 文件中不起作用:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    ...blah...
    <ApplicationIcon>Images\RegularIcon.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release-Customer|AnyCPU' ">
    ...blah...
    <ApplicationIcon>Images\CustomerIcon.ico</ApplicationIcon>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

这不起作用。不太确定我是否走在正确的轨道上。

一件令人沮丧的事情...如果我在 Visual Studio 中使用“属性”->“应用程序”选项卡设置图标,它会在 csproj 文件中创建此图标:

<PropertyGroup>
    <ApplicationIcon>Images\foo.ico</ApplicationIcon>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

为什么会遵守此匿名 PropertyGroup 中指定的图标,但我的条件 PropertyGroup 中指定的图标会被忽略?

我很感谢对此的任何帮助。

Han*_*ant 6

它可能确实有效。这只是你不容易看到的东西。Windows 资源管理器有一个非常尴尬的习惯,即在图标缓存中存储程序的图标。因此,如果您运行带有一个图标的 .exe,那么它将将该图标存储在缓存中。以后只要再次需要,就可以快速使用。一个优化,从.exe文件中挖掘图标速度很慢。

重置缓存是可能的,但很尴尬,最好在 superuser.com 上询问一个好的程序。或者直接用 Visual Studio 检查一下。文件 + 打开 + 文件,选择 .exe,打开图标节点并双击该条目。