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

时间:2015-10-26 17:46:01

标签: visual-studio nuget visual-studio-2015 projects-and-solutions

我想创建和分发一个NuGet包,当安装时只安装解决方案范围到根packages - 文件夹,引用.NuGet\packages.config文件中的包。

我已经找到了有关此主题的NuGet包格式的一些信息,根据NuGet FAQ,如果遵循这些指南,这应该是可能的:

  

项目级软件包和解决方案级软件包之间有什么区别?

     

解决方案级别的软件包只能在解决方案中安装一次   可用于解决方案中的所有项目。项目级别   软件包必须在您希望的每个项目中单独安装   用它。对于解决方案级别的包,NuGet不会改变任何内容   一个项目,而在项目级别的包中。通常,a   solution-level包安装可以从中调用的新命令   在程序包管理器控制台窗口中。

另外Suggested SO solution指出上述内容也应该有效。

事情是,我无法理解这一点。我已经验证我的包没有lib或内容目录:

NuGet package contents

我已将所有文件分发到软件包的tools - 文件夹中,包括安装时运行的init.ps1`脚本。

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

  1. 我首先必须选择要安装的项目。我曾经期望不必指定它,因为它应该是解决方案范围的。 :/
  2. init.ps1脚本确实运行并执行我希望他们执行的命令。 :)
  3. 但是,在项目中创建了一个packages - 文件夹,我被迫选择完成安装。我原本希望在solution-root中创建packages - 文件夹。 :(
  4. 此外,packages.config文件是在项目文件夹中创建的,而不是在.NuGet\packages.config中创建的,正如我在阅读我在此处找到的文档后所期望的那样。 :(
  5. 有关如何使其正常工作的任何建议?这是VS 2015的限制还是NuGet 3的变化(我认为它包含在VS2015中)?

1 个答案:

答案 0 :(得分:9)

NuGet 3.0中的NuGet团队deprecated solution level packages

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