如何以正确的方式将一个nuget包添加到package.config中?

时间:2014-04-22 18:00:01

标签: c# command-line nuget nuget-package xamarin-studio

对于我的C#项目,我正在维护一个packages.config,其中包含我的项目所需的所有依赖项。随着时间的推移,我使用常规文本编辑器手动复制粘贴条目,检查我在NuGet网站上找到的版本号,依此类推。要在结账时恢复包,我使用nuget -o nuget-packages install packages.config到目前为止工作得很好(我在非Windows系统上使用Xamarin Studio,因此没有可用的VS)。

我只是意识到在文本编辑器中弄乱packages.config不是预期的方式。我从npm和bower那里知道npm install --save-dev <pkg-xy>将会找到工作并将包版本写回配置。在NuGet.exe中是否有相同的功能?

2 个答案:

答案 0 :(得分:6)

从命令行不支持此功能。您必须手动编辑packages.config文件,或者编写一个实用程序来为您完成此工作,或者使用此功能扩展NuGet.exe。

NuGet中没有与NPM相同的 npm install -save

目前,当您想要在项目中安装新的NuGet包时,自动更新packages.config文件的唯一方法是使用IDE,例如Visual Studio或Xamarin Studio,并实际安装该软件包。在安装新软件包时,从命令行使用NuGet.exe没有在packages.config文件中添加/删除条目的选项。

NuGet.exe确实有更新命令,该命令会将程序包更新到最新版本。虽然这会更新您的packages.config文件,但它还会通过添加NuGet包所需的任何程序集引用来更新项目文件。

答案 1 :(得分:1)

你真的不应该编辑 packages.config 。包恢复不会按照您的想法执行。它只是下载 packages.config 中列出的任何缺失的包。

您可能认为这是您想要的,但Package Restore会 NOT 添加对项目的引用。它也不会执行包创建者打算运行 install.ps1 脚本的任何其他内容。

安装软件包时,NuGet会处理所有这些,因此您的项目文件已添加了引用,内容等。这些和 packages.config 文件是您提交源控件的内容。您可以省略实际的 packages 文件夹,这样就不必提交大型二进制文件。

当您打开解决方案并构建时,NuGet将会看到包丢失并将其下载,就像您已经签入它们一样。实际的“安装”已经完成(并已提交)。这就是Package Restore所做的一切:不多也不少。

如果您使用的是Xamarin Studio,可以按照此处的说明安装NuGet:

https://github.com/mrward/monodevelop-nuget-addin