【发布时间】:2011-09-19 17:33:44
【问题描述】:
我们正在构建一个 .NET 软件平台,用于我们公司内部使用的测试自动化。
应用程序由 GUI (WinForms) 组件和动态加载到其中以执行的各种“操作”组成。
已经有大约 100 个 Action 项目在进行中,而且这个数字还在增加。 其中一些项目与其他项目相互依赖,依此类推。
所有加载的动作都必须引用我们的“SDK”dll 用于各种活动(主应用程序的结果、日志记录等)。
通过这种相对简单的设计,我们面临着一些我们希望以最佳方式解决的管理决策:
- 操作(“插件”)是否应该引用我们的 SDK 项目输出,或一些已知的稳定版本? 例如,在开发大型应用程序(仅以 MS Office 为例)时,并非所有团队都自然而然地使用所有组件的源代码。
这种情况的最佳解决方案是什么?为什么?
- 如何正确验证所有需要的依赖项(例如第三方库)确实来自正确的位置?
在管理多个相互关联的项目的情况下,常见做法是什么?有什么建议吗?
【问题讨论】:
-
我会为您的 SDK 提供稳定的接口。当你需要更改一个接口时,开发一个新的并弃用旧的,但要实施一段时间。我会让每个插件项目都针对最新的 SDK 构建。我会研究 MEF 或更好的 DI 工具,例如 Autofac。
-
我可能更喜欢“使用给定的稳定版本”方法 - 使用 NuGet,您可以轻松地将 SDK 和其他支持文件打包到 NuGet 包中,这些包可以轻松安装到 Visual工作室,而且还整齐地更新了!
-
我可以在公司内部实施 NuGet 包吗?意思是,允许其他用户在不公开我们的代码的情况下获取最新更新?