【问题标题】:Building two versions of the same application构建同一应用程序的两个版本
【发布时间】:2014-09-27 17:11:16
【问题描述】:

我有一个 C# (.Net 4.0) WPF 桌面应用程序,它构建为单文件可执行文件并作为单文件可执行文件分发。我们正在使用 Visual Studio 2013。

我们现在需要创建此应用程序的单独版本,该版本几乎相同,但具有不同的“品牌”——主要是徽标的单个图形和几位文本的更改。

我宁愿不必维护两个不同的项目:有没有办法在构建时更改徽标和文本字段以读取某种变量或参数,以便最终创建两个不同的单个可执行文件: 功能相同,但标志和文字不同?

【问题讨论】:

  • 有很多方法可以做到这一点,条件编译,创建新配置,或拥有多个 .exe 项目并为公共元素使用共享项目 - 仅举三例。
  • 如果是我,我会有一个 Theme 类来包含徽标图像(URI 或其他)和文本。该类可以序列化为 XML,然后在运行时读取。对于应用程序的每个变体,它只是另一个 XML 文件。
  • 不幸的是,我需要将应用程序保留为单个可执行文件,没有“支持”文件或任何其他依赖项。说来话长……:/
  • 我确实错过了——我想知道设置不同的配置和使用 conditional compilation symbols 是否有用(例如,#IF DEBUG -- #IF CUSTOMER1 -- #IF CUSTOMER2)@987654321 @(回答)

标签: c# wpf visual-studio-2013


【解决方案1】:

如果您使用的是 Visual Studio 2013,我会考虑新的 Shared Projects 功能。

基本上,您将拥有两个仅包含不同部分的 .exe 项目,然后它们都将引用共享项目中定义的共享部分。

上面的链接应该给你一些例子,他们将它用于 Windows 8 应用程序,但它适用于包括 WPF 在内的任何类型。

【讨论】:

    【解决方案2】:

    这取决于定制级别。如果您只是更换徽标、颜色和可能的字体 - 将它们作为资源放入资源字典中,然后使用 DynamicResource 绑定引用它们...

    <Label Content="{DynamicResource CompanyName}"\>
    

    然后你可以做几件事......

    第一个选项,为每个品牌创建重复的资源字典,并在启动时加载适当的资源字典 - 可能基于 app.config 中的键值。 [在此处输入链接描述][此处为 Stackoverflow 建议]。

    第二个选项是一个帮助类,用于在代码后面设置资源的值。

    只是一些建议,希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 2019-11-18
      • 2018-04-23
      相关资源
      最近更新 更多