NuGet:Update-Package和nuget.exe更新之间的行为有何不同?

时间:2013-08-29 05:43:25

标签: visual-studio-2012 nuget

我正在使用NuGet创建一个包含代码,母版页,css,javascript等的“web框架”包。

为了加快构建/测试过程,我正在运行nuget.exe update packages.config,但我注意到它的行为与包管理器控制台的Update-Package命令不同。

  • nuget.exe update似乎保留了先前版本的软件包,导致安装了多个版本的软件包。这通常不会导致问题,但Package-Manager Get-Package命令显示安装了许多版本,有时项目将无法构建。
  • Update-Package实际卸载软件包然后重新安装,这更干净但更慢

我的问题是:
 1.这些命令之间是否存在关于差异 /关系的文档  2. 安装多个版本的nuget.exe update行为是否为错误
 3.是否有更好的方法可以在一个项目中创建一个包并在另一个项目中更新它。自动化方式?

1 个答案:

答案 0 :(得分:3)

不幸的是,除了拼凑论坛和工作项主题之外,没有太多官方指南或文档。

当前的包管理器控制台行为首先包含在此thread中的讨论结果中,后来在工作项中导出(抱歉,显然不足以发布更多链接)。

但是,as others already noted,行为与nuget.exe不一致,因为没有这样的转换。

所以,回答你的问题:

  1. VS Package Manager控制台和nuget.exe确实有不同的行为,似乎是独立更新的(非常不幸)。

  2. nuget.exe并排安装多个版本的更新行为从一开始就是一项设计功能,您可以从David Ebbo博客关于NuGet命令行的评论中找到(再次,我会给你链接,但是仍然不信任我)。

  3. 很遗憾,在构建过程中,我还没有找到任何关于使用包管理器控制台cmdlet的信息。您可以尝试在构建事件中手动删除packageId的所有文件夹,然后使用nuget.exe 打包并安装。基本上复制Update-Package手动执行的操作,因为正如David Ebbo所说,通过命令行界面卸载软件包的方式是删除文件夹(再次,不能发布引用,这是有点烦人......)