如何制作本地 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.
- 然后在每次构建时我打包并将包推送到这个本地源
- 为此我还必须删除相同的版本(如果它已经存在)(删除之一)。
- 由于nuget也在用户文件夹global文件夹中缓存包,所以也必须在那里删除。
构建完成后,我只需右键单击并恢复依赖于这些本地包的解决方案中的包。
问题解决后,只需将两个解决方案再次提交给 CI 系统,它将解析来自正常提要的包,而不是仅在我的开发机器上可用的本地提要。
我们有许多库被拆分成不同的解决方案(关注点分离)。每次签入时都会构建新的 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.
- 然后在每次构建时我打包并将包推送到这个本地源
- 为此我还必须删除相同的版本(如果它已经存在)(删除之一)。
- 由于nuget也在用户文件夹global文件夹中缓存包,所以也必须在那里删除。
构建完成后,我只需右键单击并恢复依赖于这些本地包的解决方案中的包。
问题解决后,只需将两个解决方案再次提交给 CI 系统,它将解析来自正常提要的包,而不是仅在我的开发机器上可用的本地提要。