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

时间:2019-12-03 22:49:36

标签: nuget

我们在内部创建和托管NuGet软件包,其中包含源代码和深度依赖树。我在获取“行为”依赖项时遇到了一些问题。

为清楚起见,这是专门通过VS或Rider将软件包安装到.Net Core / PackageReference项目中。我不希望它是VS / Rider / etc的错误,以至于我们正在做一些稍微错误的事情。

场景

  • 使用以下工具的PackageReference样式创建“ Package A” “ contentFiles /任何/任何”。
    • 在“ contentFiles / any / any”下创建一个名为“ Source”的子文件夹。
    • 将源代码文件放置在“源”文件夹中。
    • 依赖于“ Package B”。
  • 再次使用PackageReference样式和“ Source”子文件夹创建“ Package B”。
    • 将源代码文件放置在其“源”文件夹中。
  • 打包并发布两者。

期望

  • 安装“软件包A”(使用内置的NuGet软件包管理器UI)。
    • 您的项目将获得一个“源”文件夹。
    • A的源文件被引用到新的“ Source”文件夹中,并与项目一起编译。
    • “ Package B”也已安装,因为它是一个依赖项。
    • B的源文件也被引用到“ Source”文件夹中,并与项目一起编译。
  • 由于项目包A的所有代码及其依赖项的代码都存在,因此项目可以立即使用项目A。

实际

  • 安装“软件包A”。
    • 您的项目将获得一个“源”文件夹。
    • A的源文件被引用到新的“ Source”文件夹中,并与项目一起编译。
    • “ Package B”也已安装,因为它是一个依赖项。
    • B的源文件未引用到“ Source”文件夹中。
    • 软件包A无法编译代码,因为B的源代码不在项目中。
  • 与“ A”一样,手动安装“ Package B”。
    • B的源文件被引用到项目中新的“ Source”文件夹中。
    • 现在“ Package A”可以被编译和使用。

如果需要样本nuspec文件等,请告诉我。

谢谢

(这是来自https://github.com/NuGet/Home/issues/8858的交叉帖子。一周未回复)

1 个答案:

答案 0 :(得分:0)

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