NuGet 1.4 发行说明

NuGet 1.3 发行说明 | NuGet 1.5 发行说明

NuGet 1.4 于 2011 年 6 月 17 日发布。

Features

更新包改进

NuGet 1.4 引入了对 Update-Package 命令的很多改进,使包在解决方案中的多个项目中保持相同的版本变得更加容易。 例如,将包升级到最新版本时,通常需要将安装该包的所有项目更新为同一个版本。

现在,该 Update-Package 命令可以更便捷地:

更新单个项目中的所有包

Update-Package -Project MvcApplication1

在所有项目中更新包

Update-Package PackageId

更新所有项目中的所有软件包

Update-Package

对所有包执行“安全”更新

-Safe 标志仅将升级限制为具有相同主版本和次要版本组件的版本。 例如,如果已安装包版本 1.0.0,并且源中提供了版本 1.0.1、1.0.2 和 1.1,则 -Safe 标志会将包更新为 1.0.2。 在不使用 -Safe 标志的情况下,升级将把包升级到最新版本 1.1。

Update-Package -Safe

在解决方案级别管理包

在 NuGet 1.4 之前,使用对话框将包安装到多个项目中很麻烦。 它要求每个项目启动一次对话框。

NuGet 1.4 增加了对同时在多个项目中安装/卸载/更新包的支持。 只需右键单击解决方案并选择“ 管理 NuGet 包 ”菜单选项即可启动该解决方案。

“解决方案级别管理 NuGet 包”对话框

请注意,在对话框的标题栏中,将显示解决方案的名称,而不是项目的名称。 包操作现在提供了一个复选框列表,其中包含了操作应应用到的项目。

管理 NuGet 包项目选择

有关更多详细信息,请参阅有关 管理解决方案包的主题。

将升级限制为允许的版本

默认情况下,在包上运行 Update-Package 命令(或使用对话框更新包)时,它将更新到软件源中的最新版本。 对于新的对所有包更新的支持,你可能希望将某个包的版本锁定到一个特定范围。 例如,你可能事先知道,应用程序只能使用包的版本 2.*,但不能使用 3.0 及更高版本。 为了防止意外地将包升级到版本 3,NuGet 1.4 提供了支持,通过手动编辑allowedVersions文件,使用新的packages.config属性来限制包可以升级的版本范围。

例如,以下示例演示如何锁定 SomePackage 版本范围 2.0 - 3.0(独占)。 该 allowedVersions 特性使用 版本范围格式接受值。

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="SomePackage" version="2.1.0" allowedVersions="[2.0, 3.0)" />
</packages>

请注意,在 1.4 中,必须手动编辑将包锁定到特定版本范围。 在 NuGet 1.5 中,我们计划添加对通过 Install-Package 命令放置此范围的支持。

软件包可视化工具

通过“工具> ->包可视化工具”菜单选项启动的新包可视化工具可用于轻松可视化解决方案中的所有项目及其包依赖项。

重要说明: 此功能利用 Visual Studio 中的 DGML 支持。 仅在 Visual Studio Ultimate 中支持创建可视化效果。 仅 Visual Studio Premium 或更高版本支持查看 DGML 关系图。

包可视化工具

NuGet 对话框的自动更新检查

某些版本的 NuGet 引入了通过 .nuspec 旧版 NuGet 对话框无法理解的文件表达的新功能。 一个示例是 NuGet 1.4 中引入的 框架程序集指定功能。 因此,请务必使用最新版本的 NuGet,以确保可以使用利用最新功能的包。 若要使 NuGet 更新更加明显,NuGet 对话框包含一个逻辑,当有较新版本可用时会突出显示。

注意:仅当当前会话中选择了 “联机 ”选项卡时,才会进行检查。

“管理 NuGet 包”对话框,其中包含可用的新版本

若要关闭更新的自动检查,请转到“NuGet 设置”对话框,然后取消选中“ 自动检查更新”。

NuGet 设置

此功能实际上是在 NuGet 1.3 中添加的,但当然,在更新到 1.3(如 NuGet 1.4)之前,此功能不会可见。

包管理器对话框改进

  • 菜单名称已改进:为了清楚起见,已重命名用于启动对话框的菜单选项。 菜单选项现在 为“管理 NuGet 包”。
  • 详细信息窗格显示最新更新日期:选中“ 联机 ”或“ 更新 ”选项卡时,NuGet 对话框在包的详细信息窗格中显示最新更新的日期。
  • 显示的标记列表:Nuget 对话框显示标记。

Powershell 功能改进

  • 已签名的 PowerShell 脚本:NuGet 包括已签名的 Powershell 脚本,可在更严格的环境中使用。
  • 提示支持:包管理器控制台现在支持通过 $host.ui.Prompt$host.ui.PromptForChoice 命令进行提示。
  • 包源名称:使用 -Source 标志指定包源时,支持提供包源的名称。

nuget.exe 命令行改进

  • NuGet 自定义命令:nuget.exe 可通过使用 MEF 的自定义命令进行扩展。
  • 简化用于创建符号包的工作流:标志 -Symbols 可以应用于基于常规约定的文件夹结构,只需在文件夹中包括源文件和 .pdb 文件即可创建符号包。
  • 指定多个源NuGet install 命令支持使用分号作为分隔符,或者通过多次指定 -Source 来实现。
  • 代理身份验证支持:NuGet 1.4 添加了在需要身份验证的代理后面使用 NuGet 时提示用户凭据的支持。
  • nuget.exe 重大更新变更: 现在 nuget.exe 更新自身时需使用特定标志 -Selfnuget.exe Update 现在会获取文件的路径 packages.config ,并尝试更新包。 请注意,此更新受到限制,因为它不会:** 更新、添加、删除项目文件中的内容。 ** 在包中运行 Powershell 脚本。

使用 nuget.exe 推送包的 NuGet 服务器支持

NuGet 包含通过 NuGet 包托管基于 Web 的轻型 NuGet 存储库NuGet.Server 简单方法。 借助 NuGet 1.4,轻型服务器支持使用 nuget.exe推送和删除包。 最新版本的 NuGet.Server 新增了一个appSetting, 名称为 apiKey。 如果省略或留空密钥,则将禁用将包推送到源。 将 apiKey 设置为值(理想情况下是强密码)支持使用 nuget.exe推送包。

<appSettings>
    <!-- Set the value here to allow people to push/delete packages from the server.
            NOTE: This is a shared key (password) for all users. -->
    <add key="apiKey" value="" />
</appSettings>

对 Windows Phone 工具 Mango Edition 的支持

NuGet 现在在适用于 Mango 的 Windows Phone 工具候选版本中受支持。 目前,Windows Phone 工具不支持 Visual Studio 扩展管理器,因此若要安装 NuGet for Windows Phone 工具,可能需要手动下载并运行 VSIX。

若要卸载适用于 Windows Phone 工具的 NuGet,请运行以下命令。

vsixinstaller.exe /uninstall:NuPackToolsVsix.Microsoft.67e54e40-0ae3-42c5-a949-fddf5739e7a5

漏洞修复

NuGet 1.4 共修复了 88 个工作项。 其中71个被标记为 bug。

有关 NuGet 1.4 中修复的项目的完整列表,请查看[NuGet Issue Tracker for this release](http://nuget.codeplex.com/workitem/list/advanced?keyword=&status=All&type=All&priority=All&release=NuGet%201.4&assignedTo=All&component=All&sortField=LastUpdatedDate&sortDirection=Descending&page=0)

值得注意的 Bug 修复:

  • [Issue 603](http://nuget.codeplex.com/workitem/603):在指定特定包源时,可以正确解决跨不同存储库的包依赖关系。
  • [Issue 1036](http://nuget.codeplex.com/workitem/1036):将 `NuGet Pack SomeProject.csproj` 添加到生成后事件不再导致无限循环。
  • [Issue 961](http://nuget.codeplex.com/workitem/961)-Source 标志支持相对路径。

NuGet 1.4 更新

NuGet 1.4 发布后不久,我们发现了一些非常重要的问题。 此更新的具体版本号是 1.4.20615.9020。

漏洞修复

  • [Issue 1220](http://nuget.codeplex.com/workitem/1220):当有多个项目时,Update-Package 不会在所有项目中执行install.ps1/uninstall.ps1
  • [Issue 1156](http://nuget.codeplex.com/workitem/1156):包管理器 Consol 卡在 W2K3/XP 上(未安装 Powershell 2 时)