根据定义C#更改exe图标

Change exe icon based on define C#

我正在为两个不同的人创建一个项目,我想通过定义更改图标。例如:

#if customer1
//add code to select c:\path to resources\myimage1.ico for exe icon
#else
//add code to select c:\path to resources\myimage2.ico for exe icon
#endif

我知道你可以在这里手动select你想要哪个图标:

https://msdn.microsoft.com/en-us/library/339stzf7.aspx

但是定义方式对我们使用 git 很有意义,所以我们不必不断重新上传别人的图片。我们可以简单地放置定义并让它使用该图像。谢谢

您可以修改 csproj 文件,以便为两个客户创建不同的构建配置。例如,您可以执行以下操作:

  1. 通过在 Visual Studio 中的解决方案资源管理器中右键单击项目并单击 "Unload Project" 来卸载项目。

  2. 右键单击您卸载的项目,然后单击 "Edit "

  3. 找到"ApplicationIcon"标签并用两个条件PropertyGroup替换它,像这样:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug_Customer1|AnyCPU' ">
  <ApplicationIcon>icon.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug_Customer2|AnyCPU' ">
  <ApplicationIcon>netfol.ico</ApplicationIcon>
</PropertyGroup>

这将为 Customer1 和 Customer2 创建调试构建配置。

  1. 对你的图标 ItemGroup 做同样的事情,也在项目文件中,像这样:

<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug_Customer1|AnyCPU' ">
  <Content Include="icon.ico" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug_Customer2|AnyCPU' ">
  <Content Include="netfol.ico" />
</ItemGroup>

  1. 查找配置本身的 PropertyGroup。它将有这一行:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

  1. 在此组下方,为您的两个新调试客户配置添加调试配置组,如下所示:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug_Customer1|AnyCPU' ">
  <PlatformTarget>AnyCPU</PlatformTarget>
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug_Customer1\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug_Customer2|AnyCPU' ">
  <PlatformTarget>AnyCPU</PlatformTarget>
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug_Customer2\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>

  1. 单击保存。

  2. 在解决方案资源管理器中右键单击项目文件,然后单击 "Reload Project"。如果 Visual Studio 询问您是否要关闭项目文件,请回答是。

  3. 现在,当您想要为不同的客户构建时,转到 Build\Configuration 管理器和 select 客户特定的配置。

  4. 重复这些步骤为每个客户添加特定于版本的配置。