在使用您自己开发的代码库时,我正在寻找有关正确发布管理的信息。我们正在使用 Visual Studio 2010,在 .NET 中开发并使用 TFS。让我勾勒一下情况。
我们正在与一个团队合作开展不同的项目,这些项目都产生了自己的程序/产品。所以我们开始考虑重用代码并将它们放入某种框架或库中。为此,我们创建了一个单独的解决方案,其中包含不同的项目和它们之间的依赖关系。我们称之为“平台”。
“平台”的解决方案例如有以下项目:
- 日志记录
- 记录.测试
- 实用程序
- 图表控件
- 日志依赖
- 实用程序依赖
- 本土化
- 日志依赖
- 本地化.测试
实际上,我们已经有 20 个项目,并且项目之间的依赖关系更多,但这应该让事情变得清晰。
假设我们现在有两个项目A和B。它们如下所示:
项目A
- 参考记录
- 参考 Utils
- 对 ChartControl 的引用
- 本地化参考
- 达尔
- 日志依赖
- 主应用
- DAL 依赖
- 日志依赖
- 实用程序依赖
- ChartControl 依赖项
- 本地化依赖
项目 B
- 对 ChartControl 的引用
- 本地化参考
- 主应用
- ChartControl 依赖项
- 本地化依赖
我们如何管理这种结构?我看到了几个问题,但没有真正的答案。
- 我们是否在平台的项目 A 和 B 中包含 DLL 或代码?
- 我们是否签入 DLL 并复制到不同的项目?分支可以有益吗?
- 版本呢?假设项目 A 使用 Logging V.1.0.0.0,并且与同样使用 Logging V.1.0.0.0 的 ChartControl 一起工作得很好。在某一天,我们决定使用新版本的 ChartControl,它也使用新版本的 Logging V.2.0.0.0。如何确保项目 A 不会被迫也开始使用 Logging V.2.0.0.0?
- 我们可以决定将平台作为一部分、全部或全部发布。但是我们如何管理所有这些 DLL 的构建。手动更新所有项目中的版本号需要大量工作,并且从所有不同的 bin 文件夹中提取它们甚至更多。
- 我们如何将“平台”集成到我们的项目中。我们是否创建了一个引用文件夹并将所有 DLL 放在其中,以便在解决方案中引用它们?
- 我们如何跟踪依赖关系?如果为整个平台发布一个版本,我们如何丢弃不需要的 DLL。例如,项目 B 对 Utils 不感兴趣,但间接对 Logging 感兴趣。
- 如果我们将平台作为一个平台发布,那么小的改动就会产生一组全新的 DLL。例如,Utils 项目中的更改也将导致 Logging、Localization 等新版本......除非没有更改。
我还尝试搜索互联网并进行了一些内部讨论,但没有提供真正的答案。我在 Stack Overflow 上发现的是关于库和框架之间的定义差异,在 MSDN 上你可以阅读很多关于 DLL 和 GAC 的信息。
欢迎任何最佳实践、工具、经验……。