我正在使用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.是否有更好的方法可以在一个项目中创建一个包并在另一个项目中更新它。自动化方式?
答案 0 :(得分:3)
不幸的是,除了拼凑论坛和工作项主题之外,没有太多官方指南或文档。
当前的包管理器控制台行为首先包含在此thread中的讨论结果中,后来在工作项中导出(抱歉,显然不足以发布更多链接)。
但是,as others already noted,行为与nuget.exe
不一致,因为没有这样的转换。
所以,回答你的问题:
VS Package Manager控制台和nuget.exe
确实有不同的行为,似乎是独立更新的(非常不幸)。
nuget.exe
并排安装多个版本的更新行为从一开始就是一项设计功能,您可以从David Ebbo博客关于NuGet命令行的评论中找到(再次,我会给你链接,但是仍然不信任我)。
很遗憾,在构建过程中,我还没有找到任何关于使用包管理器控制台cmdlet的信息。您可以尝试在构建事件中手动删除packageId的所有文件夹,然后使用nuget.exe
打包并安装。基本上复制Update-Package
手动执行的操作,因为正如David Ebbo所说,通过命令行界面卸载软件包的方式是删除文件夹(再次,不能发布引用,这是有点烦人......)