根据安装类型启用/禁用功能

时间:2010-02-10 07:20:27

标签: c# .net installation-package

在您看来,我们应该如何编码以根据安装类型处理启用或禁用功能。目的是为单独的版本安装一个,并根据安装类型提供功能。

这样做的一种方法是有条件地编译代码,但这会使代码变脏并且难以维护。

3 个答案:

答案 0 :(得分:3)

您可以采用基于插件的架构,其中所有(或大多数)功能都是作为扩展核心应用功能的插件实现的。这样,您的版本将仅在装配/装运/等等的装配中有所不同。

当然,通过这种方法,您只需复制缺失的程序集,就可以将“Starter”版本变成“Professional”。要解决这个问题,你仍然需要求助于条件编译,但你必须有条件地编译负责加载这些插件的块。

例如,假设您的专业版希望能够添加导出功能。为此,您需要创建一个单独的IExporter插件界面。以下是您处理此问题的方法:

public IExporter GetExporter(FormatType format)
{
#if PROFESSIONAL_EDITION
    return ExporterRegistry.GetExporter(format);
#else
    return NullExporter();
#endif        
}   

因此,您的专业版将能够使用自定义IExporter进行扩展,而非专业版,即使所有“专业”程序集到位,也无法使用此功能功能。

答案 1 :(得分:2)

您可以使用条件编译或ConditionalAttribute。 以下是一篇解释这些主题的文章:Building and Maintaining Multiple Application Editions using Conditional Compilation

答案 2 :(得分:0)

标志是一种选择,但我猜这将是'条件编译'。安装类型会根据标志设置一个标志,否则会执行一些代码,否则会被忽略。

你能拥有不同的代码分支吗?这样每个版本只有该安装类型的相关代码。无需携带永远不会使用的代码。