【问题标题】:Nuget/Assembly versioning -Should I increase version even if nothing has changed?Nuget/Assembly 版本控制 - 即使没有任何变化,我是否应该增加版本?
【发布时间】:2023-04-07 13:50:01
【问题描述】:

我有几个项目的解决方案,每个项目都建立在 tfs 服务器上并打包到单独的 nuget 包中。

当我在构建服务器上运行构建时,会创建并发布新版本的 nuget 包。我对所有包都使用了相同的自动递增版本号。

  1. 即使该特定项目中没有任何变化,我是否应该创建新版本的包?

  2. 只有在实际项目(或其依赖项之一)发生更改时,是否有任何工具或文章可以帮助我发布新包?有人这样做吗?

编辑:

在我的解决方案中,我有项目(* format project(references) -> Package Name):

  • A -> 包A
  • B(A) -> 包B(包A)
  • C -> 包C
  • 集成测试(A、B、C)

并共享 version.txt。

当我在构建服务器上更改项目 C 构建时,所有包都在构建服务器上用 version.txt 重新打包并发布。

然后我有不同的解决方案,消耗这些包。

【问题讨论】:

  • 您是否可以考虑每次您要创建特定项目的 nuget 时,其他项目也将准备好打包?或者,可能会有其他项目正在进行中的开发。
  • 不,我不能考虑。

标签: tfs msbuild nuget versioning assemblyversions


【解决方案1】:

由于您无法考虑在想要打包其中一个项目时可以打包其他项目:

您是否认为每次您想要创建特定项目的 nuget 时,其他项目也将准备好打包?或者,可能会在其他项目上进行正在进行的开发。 – Paulo Suassuna 55 分钟前

不,我不能考虑。 – Liero 18 分钟前

您不应该在每次要打包解决方案的项目时创建所有项目的新版本。相反,您应该始终创建您想要打包的唯一一个。 另外,我猜您正在解决方案的项目之间使用项目引用。在这种情况下,您也不应该这样做,因为您将引用项目的不稳定版本。示例:

您想通过全新的签入来 nuget 打包项目 B:

  • 您在 B 中签入更改
  • 一些错误的签到进入 A
  • 您在构建服务器上构建解决方案
  • build 为 A 打包了一个坏 nuget
  • 您的 B NuGet 包将引用错误的 A NuGet 包。

实际上,您应该将它们视为不同的产品,因此您应该更改它们以供 nuget 参考。这样,您就可以保证您使用的是其他项目的稳定版本。示例

您想通过全新的签入来 nuget 打包项目 B:

  • 您签入 B 中的更改(B 引用 A 的稳定 1.0 nuget 包)
  • 一些错误的签到进入 A
  • 您在构建服务器上构建解决方案
  • Build 使用 A.1.0.nupkg 依赖项打包新 B(最新 A 是否签入错误无关紧要)
  • 你最终得到了一个很好的 B NuGet 包。

您可以将所有项目保留在一个解决方案下,但请务必将它们之间的引用更改为 NuGet 引用。

【讨论】:

  • 我同意我不应该为所有项目创建新版本。但是,我不确定是否应该拆分解决方案。查看我的编辑。
  • 您可以将所有项目集中到一个解决方案中。但一定要在项目之间使用 nuget 引用,像这样:* A * B (nuget references: A) * C * IntegrationTests(project references: A, B, C)
  • @Liero,我改进了我的答案。您无需将项目隔离在不同的解决方案中。
猜你喜欢
  • 2015-11-08
  • 2019-08-19
  • 2014-09-06
  • 2015-07-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 2016-07-21
  • 2010-11-01
相关资源
最近更新 更多