如何快速更改生成和使用 NuGet 包的自定义库?

How do I quickly make changes to custom libraries that generate and consume NuGet packages?

我的问题类似于this one。我有一个解决方案 A,其中包含项目 BC:

A
|-B  ---> B.nupkg
|          ^
|-C  ------|

过去,C 使用了对 B 的项目引用。现在,我已经转换 B 以便它在我构建时生成一个 NuGet 包(<GeneratePackageOnBuild>true</GeneratePackageOnBuild> in B.csproj),我在 C 中引用它。我这样做是因为许多消费者只想要 B 而不是 C.

所以现在如果我想更改 B 并调试它,我必须执行以下操作:

  1. 构建解决方案
  2. B.nupkgbin\Debug 复制到中央位置
  3. 再次重建解决方案(并可能清除我的 NuGet 缓存)
  4. 运行

过去,对于项目引用,我所要做的就是在更改 B 之后构建和 运行,然后我就可以单步执行新更改的代码。我如何回到之前使用项目参考的一键式流程?有没有办法在 Debug 模式下使用项目引用,在 Release 模式下使用 NuGet 包?

听起来项目 B 和 C 位于相同(或足够接近)的位置和解决方案 (A);在那种情况下,你把它复杂化了。

在解决方案中,只需在 B 和 C 之间使用项目引用(在您需要的任何方向)。这绝对没问题并且符合预期 - 您可以一起调试、构建 B 和 C 等,一切都会正常工作,而无需在 开发期间 周围复制任何内容。当您准备好为其他消费者(本地或通过 CI)进行部署时,只需将所有内容构建在一起,确保 B 和 C 都配置为生成 NuGet 包(听起来您已经完成此操作),并且 upload/copy 同时将两个 NuGet 包打包到您的 NuGet 存储中。

在输出的 nupkg 文件中,项目引用将自动转换为 NuGet 包引用;你什么都不用做。