NuGet 3.0 预览版发行说明

NuGet 2.9 RC 发行说明 | NuGet 3.0 Beta 发行说明

NuGet 3.0 预览版于 2014 年 11 月 12 日作为 Visual Studio 2015 预览版的一部分发布。 我们发布了 NuGet 3.0 预览版。 这对我们来说是一个重大发行(虽然只是预览版),我们非常期待收到关于我们更改的反馈。

Visual Studio 2012+

此 NuGet 3.0 预览版包含在 Visual Studio 2015 预览版中。 我们正在努力尽快发布 Visual Studio 2012 和 Visual Studio 2013 的预览版。 我们以前共享了 停止 Visual Studio 2010 更新的意图,我们确实做出了这种艰难的决定。

全新 UI

你首先注意到 NuGet 3.0 预览版是全新的 UI。 它不再是模式对话;它现在是完整的 Visual Studio 文档窗口。 这允许您同时打开多个项目(和/或解决方案)的用户界面,将窗口移动到另一个显示器,按您的需要进行停靠,等等。

新的 NuGet UI

除了放弃模式对话而出现的可用性差异之外,我们还在新的 UI 中提供了许多新功能。

版本选择

也许最请求的 UI 功能是允许对包安装和更新进行版本选择- 现已推出。

包版本选择

无论是安装还是更新包,版本下拉列表都允许查看包的所有可用版本,其中一些值得注意的版本被提升到列表顶部,以便于选择。 不再需要使用 PowerShell 控制台来获取不是最新版本的特定版本。

综合安装/在线/更新工作流

以前的 UI 有 3 个选项卡用于“已安装”、“联机”和“更新”。 列出的包特定于这些工作流,可用的作也特定于工作流。 虽然这似乎是合乎逻辑的,但我们听说你们中的许多人经常被这种分离所绊倒。

我们现在提供了一个综合体验,你可以安装、更新或卸载软件包,无论你是如何选择软件包的。 为了帮助执行特定工作流,我们现在提供一个筛选器下拉菜单,可以用于筛选可见的包,但包可用的操作是一致的。

卸载包

然后,通过使用“已安装”筛选器,可以容易地查看已安装的包,哪些包可更新,然后可以通过选择不同的版本来卸载或更新包,以执行相应的操作。

更新一个包

版本合并

通常,将相同的包安装到解决方案中的多个项目中。 有时,安装到每个项目中的版本可能会分散,并且有必要合并正在使用的版本。 NuGet 3.0 预览版专为这个场景引入了一项新功能。

可以通过右键单击解决方案并选择“管理解决方案的 NuGet 包”来访问解决方案级包管理窗口。 在这里,如果选择一个已安装到多个项目的包,但这些项目使用不同版本,则新的“合并”操作将变为可用。 在下面的屏幕截图中,Newtonsoft.Json已安装到SamplesClassLibrary,版本号为6.0.4,并安装到SamplesConsoleApp,版本号为5.0.4

合并版本

这是将多个版本整合为单个版本的工作流。

  1. Newtonsoft.Json 列表中选择包
  2. Action下拉列表中选择Consolidate
  3. 使用Version下拉列表选择合并的目标版本
  4. 选中应合并到该版本的项目复选框(请注意,已经在选定版本上的项目将显示为灰色)
  5. Consolidate单击该按钮以执行合并

操作预览

无论执行哪种操作——安装、更新还是卸载——新的 UI 现在都提供了预览将对项目所做更改的方式。 此预览将显示以下信息:将安装的任何新包、将更新的包、将卸载的包以及在操作过程中保持不变的包。

在下面的示例中,可以看到安装 Microsoft.AspNet.SignalR 将导致对项目进行相当多的更改。

预览安装 SignalR

安装选项

使用 PowerShell 控制台可以控制几个值得注意的安装选项。 现在,我们还将这些功能引入 UI。 现在可以控制依赖项解析行为,了解如何选择依赖项版本。

依赖项行为

还可以指定在包中的内容文件与项目中已有文件冲突时要执行的操作。

文件冲突动作

无限滚动

在列出包时,我们过去经常收到大量反馈,指出我们的 UI 既有滚动模式,又有分页模式的设计。 通常需要滚动到短列表的底部,点击下一页码,然后再次滚动。 使用新的 UI,我们在包列表中实现了无限滚动,这样您只需滚动,不再需要分页。

无限滚动

让它工作顺利,让它速度更快,让它外观漂亮

我们很高兴能推出这个新的用户界面供你试用。在这个预览版里程碑中,我们一直遵循“让它能用,速度快,外观美”的老话。在这个预览版中,我们已经实现了这第一个目标的大部分—它能够正常工作。 我们知道它还不够快,也知道它还不够漂亮。 相信我们将在现在和 RC 版本之间努力实现这些目标。 同时,我们希望听取你对新 UI 可用性的反馈,包括工作流、操作,以及使用新 UI 的感觉。

与旧 UI 相比,我们删除了几个函数。 其中一个是故意的,另一个只是没有及时完成。

搜索“全部”包源

旧 UI 允许针对所有包源执行包搜索。 我们已在 UI 中删除了该功能,我们不会将其带回。 此功能用于对所有包源执行搜索操作,将结果整合在一起,并尝试根据用户的排序选择对结果进行排列。

我们发现搜索相关性真的很难编织在一起。 你能想象在谷歌和必应中进行搜索,并将结果整合在一起吗? 此外,此功能很慢,很容易 意外 使用,我们认为它很少真正有用。 由于功能引入的问题,我们收到了许多无法修复的 bug 报告。

全部更新

我们过去在旧 UI 中有一个“全部更新”按钮,该按钮尚不存在于新 UI 中。 我们将为 RC 版本重新恢复此功能。

新建客户端/服务器 API

除了新包管理 UI 中的所有新功能外,我们还在处理 NuGet 客户端/服务器协议的一些实现详细信息。 我们所做的工作是为 NuGet 创建“API v3”,它围绕关键方案(如包还原和安装包)的高可用性而设计。 新 API 基于 REST 和超媒体,我们已选择 JSON-LD 作为资源格式。

在 NuGet 3.0 预览版中,你会在包源下拉列表中看到一个名为“preview.nuget.org”的新包源。 如果选择该包源,我们将使用新 API 连接到 nuget.org。我们在 UI 中提供了预览源,同时继续测试、修改和改进新 API。 在 NuGet 3.0 RC 中,此基于 API v3 的新包源将替换基于 v2 的“nuget.org”包源。

尽管我们投入了 API v3,但我们已使所有这些新功能也适用于现有的 API v2 协议,这意味着它们也适用于除 nuget.org 以外的现有包源。

即将推出新功能

从现在到版本 3.0 RTM,我们还在开发一些基础性的全新 NuGet 功能,除了在 UI 中看到的功能。 下面是突出投资领域的简短列表:

  1. 我们正在与 Visual Studio 和 MSBuild 团队合作,以使 NuGet 更深入地融入平台
  2. 我们正在努力放弃安装时包约定,而是通过在打包时引入新的“权威” 包清单来应用这些约定。
  3. 我们正在努力重构 NuGet 代码库,使客户端和服务器组件在 Visual Studio 中的包管理之外在不同的域中可重用。
  4. 我们正在调查“私有依赖项”的概念,其中包可以指示它仅依赖于其他包以获取实现详细信息,并且不应将这些依赖项显示为顶级依赖项。

敬请期待

请关注 我们的博客 ,了解 NuGet 3.0 的更多进展和公告!