如何制作本地 nuget 包并在 dotnet core 中本地跨解决方案引用它们

How to make local nuget packages and refference them across solutions locally in dotnet core

我们有许多库被拆分成不同的解决方案(关注点分离)。每次签入时都会构建新的 nuget 包,并且依赖于这些其他包的解决方案可以更新它们的引用。

在理想的世界中,一切都应该进行单元测试,CI 测试是有原因的,但现实生活中会遇到一些难以重现的角落案例错误表面,需要进行一些本地调试。

为了避免做我们在某些时候正确地在一些小项目上尝试过的事情,检查 N 次小修复,结果证明不是修复 :) 并获得一个新的构建是痛苦和耗时的。

在 dotnet core 之前,我曾经通过在引用解决方案中调试它们,只需添加对本地构建的 dll 的本地引用并在提交之前解决问题。对于 dotnet 核心,这已被证明是不可能的,因为所有东西都需要包装在 nupkg 中。

我还需要一个简单的 workflow/process 来处理 dotnet 核心中的这些情况吗?

这是我想出的结果,也许有人有更好的方法。

https://twitter.com/pksorensen/status/761590754301079552 https://gist.github.com/pksorensen/df61ded634bad99f85cc68f91c230361

"scripts": {
    "postcompile": [
      "nuget delete -Verbosity detailed -noninteractive -source %USERPROFILE%\.nuget\packages %project:name% %project:version%",
      "nuget delete -Verbosity detailed -noninteractive -source c:\localpackages %project:name% %project:version%",
      "dotnet pack --no-build --configuration %compile:Configuration% -o ../../artifacts/",
      "nuget add -Verbosity detailed -NonInteractive -source c:\localpackages  ../../artifacts/%project:name%.%project:version%.nupkg"
    ]
  }

使用本地提要,我根据以下内容添加了提要:https://docs.nuget.org/create/hosting-your-own-nuget-feeds 在 c:\localpackages.

  1. 然后在每次构建时我打包并将包推送到这个本地源
  2. 为此我还必须删除相同的版本(如果它已经存在)(删除之一)。
  3. 由于nuget也在用户文件夹global文件夹中缓存包,所以也必须在那里删除。

构建完成后,我只需右键单击并恢复依赖于这些本地包的解决方案中的包。

问题解决后,只需将两个解决方案再次提交给 CI 系统,它将解析来自正常提要的包,而不是仅在我的开发机器上可用的本地提要。