我有一个安装在多个客户服务器上的“white labelled”应用程序。在任何给定的安装上,差异将包括内容,样式表和图形,但也包括一些实际的代码/业务逻辑。我希望我的TFS服务器自动构建我的应用程序的所有风格。这样做有什么选择?例如我应该使用主题吗?那么#if条件编译标志呢。
P.S。问题不在于如何设置构建服务器 - 我已经这样做了。
答案 0 :(得分:3)
对于业务逻辑,我会将差异抽象为单独的库,然后您可以使用IoC / DI模式或提供程序模式在运行时解析正确的业务逻辑。
至于内容,我会研究主题。基本上你可以让你的构建服务器构建一次所有代码,然后在打包代码时选择你需要的程序集并使用适当的配置,并为手头的客户端选择适当的主题文件夹。
在这种情况下我不喜欢使用#指令。如果您考虑一下,您的单元测试必须针对您拥有的每个条件运行。如果删除条件并抽象差异,单元测试可以立即在所有可插拔组件上运行。
答案 1 :(得分:-1)
你将拥有
public partial class Order
{
public Money Calculate()
{
}
}
然后你只需要包含所需的.cs类,不要用#ifs混乱你的代码。
如果您想要所有的公共代码,并且仅为特定客户覆盖,您可以拥有OrderPartsCommon.cs,如果没有客户特定的覆盖,您将复制/使用。