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



我们在内部创建和托管NuGet包,使用源代码和深层依赖树。 我在让依赖项"表现"时遇到了一些问题。

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

场景

  • 使用包引用样式编译创建"包 A" "contentFiles/any/any"。
    • 在"contentFiles/any/any"下创建一个名为"Source"的子文件夹。
    • 将源代码文件放在"源"文件夹中。
    • 依赖于"包 B"。
  • 再次使用"包引用"样式创建"包 B",并带有"源"子文件夹。
    • 将源代码文件放在其"源"文件夹中。
  • 打包并发布两者。

期望

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

实际

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

如果需要示例 nuspec 文件等,请告诉我。

谢谢

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

NuGet的github(上面列出(的帖子最终得到了解决方案。 在 nuspec 中声明依赖项时,将include设置为"运行时、编译、本机、内容文件、构建传递"(或其某种组合(,依赖项的文件将正确嵌入。 我仍在研究选项之间的差异,但你有它。

最新更新