根据定义更改C# exe图标

5

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

#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
我认为你不能这样做。但是你可以编写一个构建脚本,在编译之前更改.csproj文件,或直接在.csproj MSBuild文件中插入条件来修改它- 它本身就是一个构建脚本。 - Lucas Trzesniewski
1个回答

9
您可以修改csproj文件,以便为两个客户创建不同的构建配置。例如,您可以执行以下操作:
  1. 通过在Visual Studio中的解决方案资源管理器中右键单击项目并单击“卸载项目”来卸载项目。

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

  3. 查找“ApplicationIcon”标记,并将其替换为两个有条件的PropertyGroups,如下所示:

<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. 在“解决方案资源管理器”中右键单击项目文件,然后单击“重新加载项目”。如果Visual Studio询问是否要关闭项目文件,请选择“是”。

  3. 现在,当您想为不同的客户构建时,请转到“生成” > “配置管理器”,并选择特定于客户的配置。 Configuration Manager with Customer-Specific Configuration

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

1
谢谢。我成功地使用我们已有的配置做了类似的事情。我在每个条件下添加了我想要的<ApplicationIcon>icon.ico</ApplicationIcon>代码,并在底部的项目组中确保包含了两个图标。 - fac7orx
太好了!很高兴你能使用现有的配置。 - Keith Holloway

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接