【发布时间】:2013-08-09 09:50:45
【问题描述】:
我们使用 Nuget 进行内部开发,以允许我们跨团队共享代码。但是,当一个人正在处理将同时部署在多个 nuget 包中的代码时,我们会遇到问题。比如
A 依赖于 B,而 B 又依赖于 C。
A、B 和 C 将他们的工件推送到 Nuget,这就是我们管理 A、B 和 C 之间依赖关系的方式。我们发现的问题是,如果开发人员想要在 C 中进行更改并快速看到这些更改反映在A,他们必须经过以下过程。
- 在 C 中进行更改。
- 将更改推送到 git
- CI 接受对 C 的更改并构建和部署新的 nuget 包。
- 进入 B 并使用 nuget update package 命令更新对 C 的引用。
- 将对 packages.config 文件的更改推送到 git
- CI 获取对 B 的更改并为 B 构建和部署新的 nuget 包
- 现在打开 A 并更改对 B 和 nuget 更新包的引用
- 在 A 中进行更改以与 B 中的更改(以及传递 C)一起进行
这似乎非常痛苦,并导致我们的一些开发人员质疑为我们内部开发的代码选择 Nuget。每个人仍然喜欢它消耗外部包。
在内部使用 Nuget 是否有更好的工作流程?
【问题讨论】:
-
仍在使用,非常喜欢。对我们来说,当您构建代码时,脚本会将包直接发送到本地 NuGet 文件共享。这很好,因为其他项目可以通过 NuGet 更新在他们的项目中获取它。我认为你的有点强硬,不一定是因为 NuGet,而是因为 3 层依赖。如果您将 NuGet 排除在等式之外,您仍然需要执行过程中痛苦的部分。
-
我认为您需要一个“胶水”包来添加更高级别的抽象。此包将引用正确的 A、B 和 C 包版本。然后项目只针对glue.1.0.0、glue.2.0.0等
-
你可以考虑设计各种包之间的接口,升级C并不一定要换B,如果只是strong name/version issue,你可以看看@ 987654322@.
标签: nuget