NuGet包依赖项源文件未嵌入到项目中

NuGet包依赖项源文件未嵌入到项目中,nuget,Nuget,我们使用源代码和深度依赖树在内部创建和托管NuGet包。我在让依赖项“行为”方面遇到了一些问题 为清楚起见,这是通过VS或Rider将包专门安装到.Net Core/PackageReference项目中。我不认为这是一个VS/Rider/etc错误,因为我们做了一些轻微的错误 场景: 使用的PackageReference样式编译创建“PackageA” “contentFiles/any/any”。 在“contentFiles/any/any”下创建一个子文件夹,称为“Source”

我们使用源代码和深度依赖树在内部创建和托管NuGet包。我在让依赖项“行为”方面遇到了一些问题

为清楚起见,这是通过VS或Rider将包专门安装到.Net Core/PackageReference项目中。我不认为这是一个VS/Rider/etc错误,因为我们做了一些轻微的错误

场景

  • 使用的PackageReference样式编译创建“PackageA” “contentFiles/any/any”。
    • 在“contentFiles/any/any”下创建一个子文件夹,称为“Source”
    • 将源代码文件放在“源”文件夹中
    • 依赖于“包B”
  • 再次使用PackageReference样式创建带有“源”子文件夹的“Package B”。
    • 将源代码文件放在其“源”文件夹中
  • 打包并发布两者
期望值

  • 安装“Package A”(使用内置的NuGet Package manager UI)。
    • 您的项目将获得一个“源”文件夹
    • A的源文件被引用到新的“源”文件夹中,并与项目一起编译
    • 还安装了“包B”,因为它是一个依赖项
    • B的源文件也被引用到“source”文件夹中,并与项目一起编译
  • 项目可以立即使用包A,因为它的所有代码及其依赖项的所有代码都存在
实际值

  • 安装“软件包A”。
    • 您的项目将获得一个“源”文件夹
    • A的源文件被引用到新的“源”文件夹中,并与项目一起编译
    • 还安装了“包B”,因为它是一个依赖项
    • B的源文件未被引用到“源”文件夹中
    • 无法编译包A代码,因为B的源代码不在项目中。
  • 手动安装“包B”,与您为“A”所做的相同。
    • B的源文件被引用到项目中的新“源”文件夹中
    • 现在可以编译和使用“包A”
如果需要样本nuspec文件等,请让我知道

谢谢


(这是一篇来自的交叉帖子。一周内没有回复)

到NuGet的github(上面列出)的帖子以解决方案结束。在nuspec中声明依赖项时,将
include
设置为“Runtime、Compile、Native、ContentFiles、BuildTransitive”(或其组合),依赖项的文件将正确嵌入。我仍在努力解决选项之间的差异,但你已经找到了