I want to create and distribute a NuGet package that when installed only installs solution-wide to the root packages-folder, referencing the package in the .NuGet\packages.config file.
我已经找到了关于这个主题的NuGet包格式的一些信息,根据NuGet FAQ,如果遵循这些指导原则,这应该是可能的:
项目级软件包和解决方案级软件包之间有什么区别?解决方案级别的软件包只能在解决方案中安装一次,以便解决方案中的所有项目都可用 . 必须在要使用它的每个项目中单独安装项目级包 . 对于解决方案级别的包,NuGet不会更改项目中的任何内容,而在项目级别的包中则会更改 . 通常,解决方案级别的软件包会安装可在“软件包管理器控制台”窗口中调用的新命令 .
另一个Suggested SO solution指出上述情况也应该有效 .
事情是,我无法让它工作 . 我已经验证我的包没有lib或内容目录:
我已将所有文件分发到包中的 tools
-folder中,包括在安装时运行的init.ps1`脚本 .
我正在使用Visual Studio 2015,当我想安装包时:
-
我首先必须选择要安装的项目 . 我曾经期望不必指定它,因为它应该是解决方案范围的 .
:/
-
init.ps1
脚本确实运行并执行我希望它们执行的命令 .:)
-
但是,在项目中创建了一个
packages
文件夹,我被迫选择完成安装 . 我原本希望在solution-root中创建packages
-folder .:(
-
此外,
packages.config
文件是在项目文件夹中创建的,而不是在.NuGet\packages.config
中创建的,正如我在阅读我在此处找到的文档后所期望的那样 .:(
有关如何使这项工作的任何建议?这是VS 2015限制还是NuGet 3的变化(我认为它包含在VS2015中)?
1 回答
NuGet团队deprecated solution level packages在NuGet 3.0中 .
有一个discussion关于以与Visual Studio 2013兼容的方式将它们重新用于未来版本的NuGet .