NuGet 2.6 发行说明

NuGet 2.5 发行说明 | NuGet 2.6.1 for WebMatrix 发行说明

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

此版本中值得注意的功能

支持 Visual Studio 2013

NuGet 2.6 是为 Visual Studio 2013 提供支持的第一个版本。 如同 Visual Studio 2012,每个版本的 Visual Studio 均包含 NuGet 包管理器扩展。

出于为 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 Config File machine wide settings

随着 NuGet 库提供的包数量持续呈指数级增长,改进搜索性能便一直稳居 NuGet 优先级列表的顶部。 NuGet 已计划研发的功能之一是上下文搜索,这意味着 NuGet 将用有关所用 Visual Studio 版本和 SKU 的信息以及要构建的项目类型作为条件,从而确定潜在搜索结果的相关性。

从 NuGet 2.6 开始,每次安装包时,安装的上下文都会记录为安装操作数据的其中一部分。 此外,搜索还会发送相同的上下文信息,从而允许 NuGet 库通过上下文安装趋势提升搜索结果。 NuGet 库的未来更新将启用此上下文相关的提升功能。

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

包作者越来越依赖于 NuGet 库中提供的包统计信息。 作者们所需的一大重要缺失数据点在于:直接包安装与依赖项安装之间的区别。 到目前为止,NuGet 客户端并未针对开发人员是直接安装包还是通过安装它来满足依赖项而围绕安装操作发送任何上下文。 从 NuGet 2.6 开始,将为安装操作发送该数据。 NuGet 库中的包统计信息会将该数据公开为单独的安装操作,并附带“-Dependency”后缀。

  • 安装
  • Install-Dependency
  • 更新
  • Update-Dependency
  • 重新安装
  • 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)