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

标签 c# visual-studio-2010 multiple-versions

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

由于共享了如此多的代码,我尽量避免重复源代码文件。我想知道维护需要同时部署不同版本的应用程序的最佳方法是什么。

最佳答案

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

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

一开始考虑您如何使用预处理器指令实际上可能很困难,但随着您的应用程序的增长,您将需要进行此重构。请记住,如果您现在不这样做,那么随着您的应用程序变得更加复杂,此重构将在以后变得更加昂贵。

关于c# - 同时维护和部署应用程序的两个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13632669/

相关文章:

c++ - Visual C++ 链接器错误 2019

ios - 如何为 iOS 版本 9 + 10(或许还有 8)实现 Apple 推送通知?

c# - 同时播放两个声音c#

c# - Visual Studio 不会使用 ReadOnlyAttribute(true) 使属性变灰

perl - 是否有非全局等效的 perlbrew?

c++ - 使用闭源库 boost 分布式

c# - Azure Functions 图像调整大小内容类型

c# - C# 中是否有任何函数返回与卡方拟合优度检验相关的 p 值?

c# - 有没有办法检查 Controller 是否禁用了 JavaScript

c# - 异步任务和简单注入(inject)器生命周期范围