版本中的显著功能

支持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 开始,我们将发布两个扩展,如下所示:

  • NuGet 程序包管理器 (适用于 2010 和 2012 Visual Studio)
  • Visual Studio 2013的NuGet 程序包管理器
  • 通过此拆分 ,nuget.org 主页 的“安装NuGet”按钮将转到 安装NuGet 页,可在其中找到有关安装不同NuGet客户端的详细信息。

    XDT Web.config转换支持

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

    2013 年 4 月,我们对 XDT 的支持NuGet做出了两大公告。 第一个是 XDT 库本身作为 NuGet 包 发布,并在 CodePlex 上开源 。 此步骤使 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 提供了一组丰富的函数,用于操作元素,无论是添加、更新或删除属性、将新元素放在特定位置,还是替换或删除整个元素及其子元素。

    Machine-Wide配置

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

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

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

    %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优先级列表顶部,不断改进搜索。 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库的未来更新将公开报表中的数据,使包作者能够充分了解开发人员如何安装其包。

    Bug 修复

    NuGet 2.6 还包括多个 bug 修复。 有关在 NuGet 2.6 中修复的工作项的完整列表,请查看 此版本的NuGet问题跟踪器