NuGet 2.6 发行说明

NuGet 2.5 发行说明 | 用于 WebMatrix 的 NuGet 2.6.1 发行说明

NuGet 2.6 于 2013 年 6 月 26 日发布。

版本中的显著功能

对 Visual Studio 2013 的支持

NuGet 2.6 是第一个版本,它为 Visual Studio 2013 提供支持。 与 Visual Studio 2012 一样,NuGet 包管理器扩展包含在 Visual Studio 的每个版本中。

为了为 Visual Studio 2013 提供最佳支持,同时仍支持 Visual Studio 2010 和 Visual Studio 2012,并将扩展大小保持尽可能小,我们正在为 Visual Studio 2013 生成单独的扩展,而原始扩展仍面向 Visual Studio 2010 和 2012。

从 NuGet 2.6 开始,我们将发布两个扩展,如下所示:

  1. NuGet 包管理器 (适用于 Visual Studio 2010 和 2012)
  2. 用于 Visual Studio 2013 的 NuGet 包管理器

通过此拆分, nuget.org 主页的“安装 NuGet”按钮将转到 “正在安装 NuGet ”页,可在其中找到有关安装不同 NuGet 客户端的详细信息。

XDT Web.config 转换支持

NuGet 客户端最请求的功能之一是使用 Visual Studio 生成配置转换中使用的 XDT 转换引擎来支持更强大的 XML 转换。

2013 年 4 月,我们对 XDT 的 NuGet 支持发表了两项重大公告。 第一个是 XDT 库本身作为 NuGet 包发布。[open sourced on CodePlex](http://xdt.codeplex.com/) 此步骤使 XDT 引擎可供其他开源软件(包括 NuGet 客户端)自由使用。 第二个公告是支持在 NuGet 客户端中使用 XDT 引擎进行转换的计划。 NuGet 2.6 包括此集成。

工作原理

为了利用 NuGet 的 XDT 支持,该机制看起来与 当前配置转换功能类似。 转换文件将添加到包的内容文件夹中。 但是,虽然配置转换使用单个文件进行安装和卸载,但 XDT 转换可以使用以下文件对这两个进程进行精细控制:

  • Web.config.install.xdt
  • Web.config.uninstall.xdt

此外,NuGet 使用文件后缀来确定要为转换处理运行的引擎,因此使用现有 web.config.transforms 的包将继续正常工作。 XDT 转换也可以应用于任何 XML 文件(而不仅仅是 web.config),因此你可以将其用于项目中的其他应用程序。

可以用 XDT 做些什么

XDT 最大的优势之一是用于操作 XML DOM 结构的简单而强大的语法。 XDT 不简单地将一个固定文档结构覆盖到另一个结构,而是通过多种方式提供用于匹配元素的控件,从简单的属性名称匹配到完整的 XPath 支持。 找到匹配的元素或元素集后,XDT 提供了一组丰富的功能来操作这些元素,无论是添加、更新或删除属性,将新元素放置到特定位置,还是替换或删除整个元素及其子元素。

全机配置

NuGet 的强大优势之一是,它将其他大型可执行文件或库分解成一组可集成的模块化组件,最重要的是独立维护和版本控制。 然而,这种副作用可能导致产品或产品系列的传统概念更加分化。 NuGet 的自定义包源功能提供了一种组织包的方法;但是,自定义包源不可自行发现。

NuGet 2.6 通过搜索路径 %ProgramData%/NuGet/Config 下的文件夹层次结构来扩展用于配置 NuGet 的逻辑。产品安装程序可以在此文件夹下添加自定义 NuGet 配置文件,以为其产品注册自定义包源。 此外,文件夹结构还支持 IDE 的产品、版本甚至 SKU 的语义。 这些目录中的设置将按以下顺序应用,并采用“后进者为胜”的优先策略。

  1. %ProgramData%\NuGet\Config*.config
  2. %ProgramData%\NuGet\Config{IDE}*.config
  3. %ProgramData%\NuGet\Config{IDE}{Version}*.config
  4. %ProgramData%\NuGet\Config{IDE}{Version}{SKU}*.config

在此列表中,{IDE} 占位符特定于运行 NuGet 的 IDE,因此在 Visual Studio 中,它将是“VisualStudio”。 {Version} 和 {SKU} 占位符由 IDE(例如“11.0”和“WDExpress”、“VWDExpress”和“Pro”)提供。 然后,该文件夹可以包含许多不同的 *.config 文件。 因此,ACME 组件公司可以作为其产品安装程序的一部分添加一个自定义包源,通过创建以下文件路径,仅在 Visual Studio 2012 的 Professional 和 Ultimate 版本中可见:

%ProgramData%\NuGet\Config\VisualStudio\11.0\Pro\acme.config

虽然文件夹结构使软件安装程序等程序能够将计算机范围的包源添加到 NuGet 的配置中变得简单,但 NuGet 配置对话框也进行了更新,以允许将包源注册为用户特定的(例如,在 %AppData%/NuGet/NuGet.Config 中注册)或计算机范围。

Visual Studio 2013 使用此功能,在此功能中,文件被安装在以下位置:

%ProgramData%\NuGet\Config\VisualStudio\12.0\Microsoft.VisualStudio.config

在此文件中,配置了名为“.NET Framework 包”的新包源。

NuGet 配置文件 全局设置

随着 NuGet gallery 提供的包数量继续呈指数级增长,改进搜索始终位列 NuGet 优先级列表之首。 NuGet 的计划功能之一是上下文搜索,这意味着 NuGet 将使用有关所使用的 Visual Studio 版本和 SKU 的信息,以及要构建的项目类型作为条件来确定潜在搜索结果的相关性。

从 NuGet 2.6 开始,每次安装包时,安装上下文都会记录为安装操作数据的一部分。 搜索还会发送相同的上下文信息,这将允许 NuGet 画廊通过上下文安装趋势提升搜索结果。 NuGet Gallery 的即将进行的更新将启用这种上下文相关的相关性增强。

跟踪直接安装与依赖项安装

包作者越来越依赖于 NuGet 库中提供的 包统计信息 。 作者要求的重要缺失数据点是直接包安装与依赖项安装之间的区别。 到目前为止,NuGet 客户端在包安装操作中没有发送任何上下文,无论是开发人员直接安装包还是为了满足依赖关系而安装包。 从 NuGet 2.6 开始,这些数据现在将用于安装操作。 NuGet 库中的包统计信息将公开这些数据为单独的安装操作,并带有“-Dependency”后缀。

  • Install
  • Install-Dependency
  • Update
  • 更新依赖
  • Reinstall
  • Reinstall-Dependency

除了不同的操作名称,还将记录安装依赖包ID。 NuGet 库的未来更新将公开报表中的数据,使包作者能够完全了解开发人员如何安装其包。

漏洞修复

NuGet 2.6 还包括多个 bug 修复。 有关 NuGet 2.6 中修复问题的完整列表,请查看 [NuGet Issue Tracker for this release](https://nuget.codeplex.com/workitem/list/advanced?keyword=&status=Closed&type=All&priority=All&release=NuGet%202.6&assignedTo=All&component=All&sortField=LastUpdatedDate&sortDirection=Descending&page=0&reasonClosed=All)