打包单个 Nuget 并引用其他项目

问题描述 投票:0回答:1

我有一个包含多个项目的 .NET 7 解决方案。我现在想打包一个项目的 Nuget,它将作为另一个应用程序调用某些 API 的代理。我的项目结构类似于:

  • 项目一:基础设施
    • 枚举
  • 项目2:代理
    • 接口
    • 服务
  • 项目3:API合约(输入/输出模型)
  • 项目 4: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 依赖项打包在一起?

c# nuget .net-7.0 pack
1个回答
0
投票

通常我们做的就是这种场景:

  1. 将您的
    Infrastructure
    作为独立的
    nuget
    包装。
  2. 在您的
    Proxy
    中安装该软件包并将您的项目发布为
    nuget

还有其他方法可以将您的

dlls
包含为资源,并且
Nuget
只会打包它们 - 但在我看来这是不好的做法。

© www.soinside.com 2019 - 2024. All rights reserved.