同时维护和部署两个版本的应用程序

Wic*_*tar 5 c# visual-studio-2010 multiple-versions

我在Visual Studio 2010中有一个C#WinForms应用程序,供两个不同的客户使用.应用程序的基本功能对于每个客户都是相同的,但某些代码行(存储过程的名称,资源,某些行为)在不同版本之间是不同的.到目前为止,我已将应用程序保留在同一个项目中,并在构建/发布时使用预处理程序指令来切换要使用的部署.但是,该项目的范围已经发展到不再可行的程度.

由于这么多代码是共享的,我试图避免重复源代码文件.我想知道最好的方法是维护一个需要同时部署不同版本的应用程序.

Men*_*hak 4

使用接口来定义您的类。拥有一个接口意味着您可以拥有同一接口的多个实现,每个客户端一个。这将要求您分析现有的代码库并识别代码中可以定义这些接口的逻辑分离。

然后,您就可以根据客户端的需要加载界面。例如,您可以通过配置来执行此操作。根据配置值加载实现 1 或实现 2。有很多很多方法可以完成这个特定的部分。您应该阅读依赖注入、控制反转以及 Ninject、Autofac、Unity 等工具。

起初考虑如何使用预处理器指令实际上可能很困难,但随着应用程序的增长,您将需要进行这种重构。请记住,如果您现在不这样做,随着您的应用程序变得更加复杂,这种重构的成本将会更高。