.Net Standard 2.0 生成 NuGet 包,包括同一解决方案中的项目和 NuGet 包

.Net Standard 2.0 Generate NuGet package including projects in the same solution and NuGet packages

我在这里看到了一些类似我的问题,但大约一年前就有人回答了,我的想法是检查是否有关于此的任何消息。

假设我有一个具有以下结构的解决方案:

结构解释

这个项目的想法是从 public/private 云中检索文档,但我想让调用对调用者透明,所以我将解决方案架构如下:

CloudHandler.Library.csproj 引用 CloudHandler.Services.Factory.csproj

CloudHandler.Services.Factory.csproj 参考文献

CloudHandler.Plugin.Aws.csproj 引用 AWSSDK.S3

当我打包CloudHandler.Library甚至CloudHandler.Services.Factory时,使用这个引用的项目抛出异常,因为它找不到AWSSDK.S3引用。

如何打包包含所有引用的 DotNetProjectReferencingSubProjects? (这些项目引用的项目和 NuGet 包?)

提前致谢。

我读过一些建议添加 csproj 文件的想法,它在 nuspec 上被引用。 想想以后维护这个项目,没有知识的人很难想通。

传递依赖性工作正常,但您需要为每一层创建(和upload/manage)包;仅仅为 CloudHandler.Library 创建一个 nupkg 是不够的 - 您需要为 树中的所有内容创建一个 nupkg.

使用私有包缓存在本地完成,该缓存具有:

  • CloudHandler.Domain.Plugins.Aws.1.0.0.nupkg
  • CloudHandler.Domain.Plugins.Azure.1.0.0.nupkg
  • CloudHandler.Domain.Plugins.Gcp.1.0.0.nupkg
  • CloudHandler.Domain.Providers.1.0.0.nupkg
  • CloudHandler.Infrastructure.Contracts.Plugin.1.0.0.nupkg
  • CloudHandler.Infrastructure.Contracts.Provider.1.0.0.nupkg
  • CloudHandler.Library.1.0.0.nupkg
  • CloudHandler.Services.Factory.1.0.0.nupkg

然后我可以创建一个测试项目:

  <ItemGroup>
    <PackageReference Include="CloudHandler.Library" Version="1.0.0"/>
  </ItemGroup>

一切正常。构建输出包括 AWSSDK.Core.dll 和 ASWWDK.S3.dll 等。测试项目可以看到扩展依赖树中的所有类型,尽管只直接依赖 CloudHandler.Library.

根据您的需要,这 可能 可以作为一种动力,使您的包的粒度略微降低。或者它可能正好适合您的需要。