我有一个包含多个项目的 .NET 7 解决方案。我现在想打包一个项目的 Nuget,它将作为另一个应用程序调用某些 API 的代理。我的项目结构类似于:
我想为项目 2 打包一个 Nuget,它基本上包含调用项目 4 中可用的 API 的服务。我的服务在完成所需的 HTTP 调用后返回来自项目 3 的输出模型。
不幸的是,当我打包项目 2 并在另一个应用程序中实现它时,我收到错误消息
Unable to load one or more of the requested types.\r\nCould not load file or assembly 'xxx.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
这当然是因为 API 合约项目中引用了一些枚举值。
最初,我在引用项目 3 时遇到了同样的问题,我也可以通过将该项目公开为 Nuget 来修复它。现在我觉得我应该对项目 1 做同样的事情,但我对此有点谨慎,因为最终我需要在 Nuget 包中公开我的整个解决方案,并且它们作为独立包永远不会有任何价值.
那么有没有一种方法可以只公开一个封装了项目 2 + 所需的外部依赖项(例如相关的 API 合约或枚举)的 Nuget,而不是将一个 Nuget 与其他 2 个 Nuget 依赖项打包在一起?
通常我们做的就是这种场景:
Infrastructure
作为独立的 nuget
包装。Proxy
中安装该软件包并将您的项目发布为 nuget
。还有其他方法可以将您的
dlls
包含为资源,并且 Nuget
只会打包它们 - 但在我看来这是不好的做法。