需要以下方面的建议:
在我的公司中,我正在开发供外部利益相关者使用的 .NET 类库,并且我在利益相关者可以访问的私有 NuGet 源上共享它们。
这些库依赖于一个核心库,如下所示。目前,我在一个 VS 解决方案中维护这些库,显然是在一个 Git 存储库中。我正在关注 SemVer 对它们进行版本控制。
CoreLibrary
CoreLibrary.Extension1 (references CoreLibrary as project reference)
CoreLibrary.Extension2 (references CoreLibrary as project reference)
...
There might be more of these extension libraries in the near future
到目前为止,我一直在 Visual Studio 中手动对它们进行版本控制(每当我需要升级版本时,在 AssemblyInfo.cs 中手动设置正确的值),并在每个项目中使用批处理文件来打包并将该特定库推送到 NuGet。
但现在我最近开始研究 VSTS,我的下一个任务是尽可能地自动化构建和发布,包括自动版本控制。我偶然发现了 GitVersion,我认为它对最后一部分有很大帮助。
但是,这里是但是。如果我理解正确,GitVersion 在存储库级别运行,因此由 GitVersion 计算的给定 semver 版本适用于存储库中的所有程序集/库,对吗?
那么您对这些库的发布和版本控制策略有何建议?
1) 像现在一样将所有内容保存在一个解决方案和存储库中,每当需要发布的一个包(例如 CoreLibrary.Extension1)发生更改时,这也会为所有其他库生成一个 NuGet 包。因此,如果所有包都在 1.0.0 上并且其中一个有一点小变化,它们都会被撞到 v1.1.0 并且都被打包和推送?
2)为每个项目创建一个 git repo 并让 GitVersion 分别在每个 repo 上发挥它的魔力。通过扩展库中的 NuGet 引用 CoreLibrary。
选项 2 是我认为最干净的选项,并且具有按项目处理版本控制和打包的优点,但在维护它们方面可能会大大增加工作量,特别是考虑到我是这些库的唯一开发人员这一事实。
你觉得呢?你有没有什么想法 ?在给定上下文的情况下,您会选择哪个选项?我是否错过了任何其他可能值得考虑的选择?
设置我在自动化构建和发布中的第一步,因此任何建议都非常受欢迎。
谢谢