【发布时间】:2008-10-21 21:20:00
【问题描述】:
我们有一个产品,但我们正在进行一些品牌重塑,因此我们需要能够构建和维护两个版本。我使用资源文件和一些#if 东西来解决字符串、图像和其他任何问题,但是程序图标给我带来了麻烦。我无法从 msdn 或谷歌搜索中弄清楚。谢谢!
【问题讨论】:
我们有一个产品,但我们正在进行一些品牌重塑,因此我们需要能够构建和维护两个版本。我使用资源文件和一些#if 东西来解决字符串、图像和其他任何问题,但是程序图标给我带来了麻烦。我无法从 msdn 或谷歌搜索中弄清楚。谢谢!
【问题讨论】:
您指的是应用程序图标吗?您可以手动编辑您的项目文件并输入类似于以下的代码:
<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>
【讨论】:
创建以您的配置命名的图标文件。 (例如 DebugOld.app.ico DebugBranded.app.ico、ReleaseBranded.app.ico)
创建预构建步骤:
copy "$(ProjectDir)$(ConfigurationName).app.ico" "$(ProjectDir)app.ico"
【讨论】:
在普通代码中设置图标,您应该能够使用与其他地方相同的技术。您将需要资源文件中的两个图标(至少我怀疑是这样),但它应该可以工作。
或者,设置预构建步骤以将适当的图标复制到通用文件名中 - 例如将 debug.ico 或 release.ico 复制到 app.ico。有点hacky,但我认为它会起作用。这样一来,您最终只会在完成的二进制文件中得到一个图标。
还有另一个选择:查看构建文件并查看图标是如何内置的,然后对其进行条件化。 Marc Gravell 这样做是为了在 MiscUtil 中引用 - 该项目可以针对 .NET 2.0 或 3.5 构建,具体取决于配置。我怀疑资源可以以非常相似的方式进行条件化。
【讨论】: