想要在C#中具有不同版本的不同图标

5 c# resources icons

我们有一个产品,但是我们正在做一些品牌重塑,因此我们需要能够构建和维护两个版本。我使用资源文件和一些#if东西来解决字符串,图像和其他问题,但是程序图标给我带来了麻烦。我无法从msdn或google搜索中找出答案。谢谢!

Dan*_*ted 5

您指的是应用程序图标吗?您可以手动编辑项目文件并输入类似于以下内容的代码:

<PropertyGroup>
  <ApplicationIcon Condition=" '$(Configuration)' == 'Version1' ">Icon1.ico</ApplicationIcon>
  <ApplicationIcon Condition=" '$(Configuration)' == 'Version2' ">Icon2.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Version1' ">
  <Content Include="Icon1.ico" />
</ItemGroup>
<ItemGroup Condition=" '$(Configuration)' == 'Version2' ">
  <Content Include="Icon2.ico" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 2

在普通代码中设置图标,您应该能够使用与其他地方相同的技术。您将需要资源文件中的两个图标(至少我怀疑如此),但它应该可以工作。

或者,设置预构建步骤以将适当的图标复制到通用文件名中 - 例如,将 debug.ico 或 release.ico 复制到 app.ico 中。有点老套,但我认为它会起作用。这样,您最终在完成的二进制文件中只会得到一个图标。

还有另一种选择:查看构建文件并查看图标是如何内置的,然后对其进行条件化。Marc Gravell 在MiscUtil中这样做是为了参考- 该项目可以针对 .NET 2.0 或 3.5 构建,具体取决于配置。我怀疑资源可以以非常类似的方式进行限制。