如何创建纯解决方案级 NuGet 包

How do I create a pure solution-level NuGet package

我想创建和分发一个 NuGet 包,该包在安装时仅将整个解决方案安装到根 packages 文件夹,引用 .NuGet\packages.config 文件中的包。

我已经找到了一些关于此主题的 NuGet 包格式的信息,并且根据 NuGet FAQ 如果遵循以下准则,这应该是可能的:

What is the difference between a project-level package and a solution-level package?

A solution-level package has to be installed only once in a solution to be available for all projects in the solution. A project-level package must be installed separately in each project where you want to use it. For solution-level packages, NuGet doesn't change anything in a project, whereas in a project-level package it does. Typically, a solution-level package installs new commands that can be called from within the Package Manager Console window.

另一个 Suggested SO solution 指出上述方法也应该有效。

问题是,我无法让它工作。我已验证我的包没有 lib 或内容目录:

我已将所有要分发的文件放入包中的 tools 文件夹中,包括 init.ps1` 脚本顶部 运行 安装时。

我正在使用 Visual Studio 2015,当我想安装软件包时:

  1. 我首先要select一个项目来安装。我原以为不必指定它,因为它应该是解决方案范围的。 :/
  2. init.ps1 脚本执行 运行 并执行我希望它们执行的命令。 :)
  3. 但是,在我被迫选择完成安装的项目中创建了一个 packages 文件夹。我本来希望在解决方案根目录中创建 packages 文件夹。 :(
  4. 此外,packages.config 文件是在项目文件夹中创建的,而不是在 .NuGet\packages.config 中创建的,正如我在阅读我找到的文档后所期望的那样。 :(

关于如何让它工作有什么建议吗?这是 VS 2015 限制还是 NuGet 3 更改(我相信它包含在 VS2015 中)?

NuGet 团队 deprecated solution level packages 在 NuGet 3.0 中。

有一个 discussion 关于以与 Visual Studio 2013 兼容的方式将它们带回 NuGet 的未来版本。