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

3
我们在公司内部创建和托管具有源代码和深层依赖关系的 NuGet 包。我在让依赖关系“正常工作”的问题上遇到了一些困难。
为了清晰起见,这是特定于在 .Net Core / PackageReference 项目中通过 VS 或 Rider 安装包的情况。我不认为这是 VS/Rider/等软件的错误,而更可能是我们做错了一些事情。
场景:
- 使用“contentFiles/any/any”风格编译创建“Package A”。 - 在“contentFiles/any/any”下创建一个名为“Source”的子文件夹。 - 将源代码文件放入“Source”文件夹中。 - 依赖于“Package B”。 - 再次使用 PackageReference 风格创建“Package B”,并带有一个“Source”子文件夹。 - 在其“Source”文件夹中放置源代码文件。 - 打包并发布两个包。
期望结果:
安装“Package A”(使用内置的NuGet包管理器UI)。
  • 您的项目将获得一个“源”文件夹。
  • A的源文件被引用到新的“源”文件夹中,并与项目一起编译。
  • 由于它是依赖项,“Package B”也被安装。
  • B的源文件也被引用到“源”文件夹中,并与项目一起编译。
由于所有的代码和所有的依赖项代码都存在,因此“Package A”可以立即被项目使用。
安装“包A”。
- 您的项目获得了一个“源”文件夹。 - A的源文件被引用到新的“源”文件夹中,并与项目一起编译。 - “包B”也被安装,因为它是一个依赖项。 - B的源文件没有被引用到“源”文件夹中。 - 不能编译Package A代码,因为B的源代码不在项目中。 手动安装“包B”,与“A”同样的方式。
- B的源文件被引用到项目中的新的“源”文件夹中。 - 现在可以编译和使用“包A”。
如果需要示例nuspec文件等,请告诉我。
谢谢
(这是从https://github.com/NuGet/Home/issues/8858转发的。已经一个星期没有回复了)
1个回答

0
在 NuGet 的 Github 上发布的帖子(如上所述)最终得出了解决方案。在 nuspec 中声明依赖项时,将 include 设置为 "Runtime、Compile、Native、ContentFiles、BuildTransitive"(或其中某些组合),您的依赖文件将正确嵌入。我仍在研究选项之间的差异,但是就是这样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接