有时候我们编写的应用程序需要提供给不同的用户使用,希望它显示不同的图标,而又不想每次手工去切换图标,这时候我们可以使用条件编译来进行图标的自动切换。
实现的方式很简单,就是在项目文件里设定条件编译的内容即可。
-
在项目中添加两个图标,这里以我现有的项目为例,在Icons文件夹下有App.ico和Contacts.ico两个图标如图:
- 假定我希望应用带了条件编译的符号USERA就将App.ico作为编译的Exe文件的图标,而不带USERA的符号就使用Contacts.ico作为Exe文件的图标,修改项目文件如下,这里以C#项目为例:
2.1 用记事本或者其它文本编辑器打开项目文件即扩展名为.csproj
的那个(注意VB.NET项目的文件扩展名为.vbproj
)
2.2 搜索关键字<ApplicationIcon>
的段落,准备修改。默认的设置可能如下图所示两种情况:
<PropertyGroup>
<ApplicationIcon>
</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>Icons\usb.ico</ApplicationIcon>
</PropertyGroup>
2.3 改成下面这样的:
<PropertyGroup Condition="'$(DefineConstants.Contains(USERA))' == 'true'">
<ApplicationIcon>Icons\App.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(DefineConstants.Contains(USERA))' != 'true'">
<ApplicationIcon>Icons\Contacts.ico</ApplicationIcon>
</PropertyGroup>
完成后带条件USERA
或者不带的编译出来是不同的图标如下:
注意:如果图标没有变,上面的操作没有问题,试着将文件复制到别处或者改名看看,可能是Windows的图标缓存导致的。