根据定义C#更改exe图标

时间:2015-10-06 18:08:34

标签: c# icons exe

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

#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

我知道你可以手动选择你想要的图标:

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

但定义方式对我们使用git是有意义的,所以我们不必重新上载其他人的形象。我们可以简单地放置定义并让它使用该图像。感谢。

1 个答案:

答案 0 :(得分:5)

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

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

  2. 右键单击已卸载的项目,然后单击“编辑”

  3. 找到“ApplicationIcon”标签并将其替换为两个条件PropertyGroup,如下所示:

  4. <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上也是如此,也在项目文件中,如下所示:
    2. <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本身。它将有这一行:
      2. <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

        1. 在此组下方,为两个新的调试客户配置添加调试配置组,如下所示:
        2. <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. 在解决方案资源管理器中右键单击项目文件,然后单击“重新加载项目”。如果Visual Studio询问您是否要关闭项目文件,请说“是”。

          3. 现在,当您要为不同的客户构建时,请转到Build \ Configuration Manager并选择特定于客户的配置。 Configuration Manager with Customer-Specific Configuration

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