我在 Visual Studio 2010 中有一个 C# WinForms 应用程序,供两个不同的客户使用。应用程序的基本功能对于每个客户都是相同的,但某些代码行(存储过程的名称、资源、某些行为)在版本之间是不同的。到目前为止,我一直将应用程序保留在同一个项目中,并在构建/发布时使用预处理器指令在要使用的部署之间切换。但是,该项目的范围已经扩大到不再可行的程度。
由于共享了如此多的代码,我尽量避免重复源代码文件。我想知道维护需要同时部署不同版本的应用程序的最佳方法是什么。
最佳答案
使用接口(interface)来定义您的类。拥有一个接口(interface)意味着您可以拥有同一接口(interface)的多个实现,每个客户端一个。这将需要您分析现有的代码库并确定代码中可以定义这些接口(interface)的逻辑分隔。
然后您就可以根据客户端的需要加载界面。例如,您可以通过配置来执行此操作。根据配置值加载 Implementation1 或 Implementation2。有很多很多方法可以完成这个特定的位。您应该阅读依赖注入(inject)、控制反转并查看 Ninject、Autofac、Unity 等工具。
一开始考虑您如何使用预处理器指令实际上可能很困难,但随着您的应用程序的增长,您将需要进行此重构。请记住,如果您现在不这样做,那么随着您的应用程序变得更加复杂,此重构将在以后变得更加昂贵。
关于c# - 同时维护和部署应用程序的两个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13632669/