繁体   English   中英

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

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

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

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

  • 点网解决方案

    • DotNetProjectReferenceSubProjects(本项目是生成nuget包的项目)
    • 项目A
    • 项目B
    • 项目C

      -NugetPackageInsideProjectC

结构说明

这个项目的想法是从公共/私有云中检索文档,但我想让调用对调用者透明,所以我构建了这样的解决方案:

  • CloudHandler.Library.csproj
  • CloudHandler.Services.Factory.csproj
  • CloudHandler.Plugin.Aws.csproj
  • CloudHandler.Plugin.PrivateCloud1.csproj
  • CloudHandler.Plugin.Gcp.csproj
  • CloudHandler.Plugin.PrivateCloud2.csproj

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

CloudHandler.Services.Factory.csproj参考资料

  • CloudHandler.Plugin.Aws.csproj
  • CloudHandler.Plugin.PrivateCloud1.csproj
  • CloudHandler.Plugin.Gcp.csproj
  • CloudHandler.Plugin.PrivateCloud2.csproj

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

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

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

提前致谢。

我已经阅读了一些建议添加 csproj 文件的想法,并且在 nuspec 上引用了它。 考虑以后维护项目,没有知识的人很难搞清楚。

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

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

  • 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>

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

根据您的需要,这可能会促使您的包裹稍微少一些。 或者它可能正好适合您的需要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM