NuGet 7.0 发行说明

NuGet 分发车辆:

NuGet 版本 在 Visual Studio 版本中可用 在 .NET SDK 中可用
7.0.0 Visual Studio 2026 版本 18.0.0 10.0.1001
7.0.1 Visual Studio 2026 版本 18.1.0

1 随任何 .NET 工作负载一起安装 Visual Studio 2026

摘要:7.0.1 中的新增功能

此版本中已修复的问题

  • 修复了将中央包管理与允许的浮动版本配合使用时出现的 NU1011 错误 #14637

此版本中的提交列表

摘要:7.0.0 中的新增功能

  • 面向 .NET 10 的项目默认使用 NuGetAuditMode=all 设置,从而对传递包中的漏洞发出警告 #14161

  • 针对面向 .NET 10 #14345 的所有项目都启用了包修剪

  • 创建了 .NET 10 SDK 或更高版本支持的 NuGet 模型上下文协议 (MCP) 服务器。 NuGet 的 MCP 在 Visual Studio 2026 中预安装,在 VS 17.14 和 VS Code 中可安装。 服务器作为 NuGet.Mcp.Server 包发布 nuget.org。

  • 启用打包旧 PackageReference 项目而无需包 - #14046

  • 在 .NET 10 中弃用 SHA-1 - #13814

  • 详细信息窗格反映来自审核源的漏洞数据 - #14554

  • 包管理器 UI 中的 NuGet AuditSources 支持 - #13954

  • 将 NuGet 的设置迁移到新的 Visual Studio 选项窗口

    • 在 Visual Studio 选项中迁移“包源”设置 - #14233

    • 在 Visual Studio 选项中迁移“包源映射”设置 - #14234

  • dotnet update package --vulnerable (审核修补程序) - #13372

重大变化

  • 在还原期间添加包 ID 验证 - #14407

  • 7.0 中不再支持 Project.json。 Visual Studio 2026 自动将 project.json 项目迁移到 PackageReference

  • 包修剪将导致包锁定文件中出现一次性差异 - #14272

  • 通过应用 PrivateAssets=all 和 IncludeAssets=none 属性,来实现对直接引用的私有化 - #14196

  • 在 NuGet.exe sign 和 mssign 命令中因使用 SHA-1 指纹而引发错误 - #13962

  • 在服务索引中的资源中使用非 https 源时显示错误 - #13364

SDK 重大变更

  • Project.json 弃用

    • 删除 project.json 包 - #7931

    • 删除 project.json 支持 - #7199

    • 删除 PackageSpec.Dependencies - #14446

    • 清理包规格冗余 API - #6231

  • 已删除未使用的 NuGet VS 扩展性 API - #14403

  • 删除在 NuGet.Frameworks、NuGet.Protocol、NuGet.Commands 和 NuGet.PackageManagement 中标记为已过时的所有未使用的 API - #14395

  • 从 NuGet.Common、NuGet.Configuration、NuGet.LibraryModel、NuGet.Packaging 和 NuGet.ProjectModel 中删除过时的 API - #14393

  • 阻止和删除未使用的还原实现的代码,例如 Standalone。 - #14184

  • 删除 DotnetToolReference 还原 - #14183

此版本中已修复的问题

NuGet SDK 修复

  • 请勿在 NuGet.Protocol 中使用基于反射的反序列化 - #14470

  • 将 JsonSerializerIsReflectionDisabled 更新为 Nuget.Protocols 6.13.1 的应用中,若 JsonSerializerIsReflectionEnabledByDefault 设置为 false - #14111

.NET 命令行界面 (CLI)

  • 为 .NET core 身份验证插件启用 CanShowDialog - #14010

  • “dotnet package update”修改了错误的项目文件 (csproj) - #14585

  • dotnet nuget 验证应输出包内容哈希 - #14384

  • dotnet 包更新应支持 --verbosity - #14319

  • dotnet 包更新应支持 CPM 和 VersionOverride - #14318

  • dotnet 包更新应支持多个包 - #14308

  • dotnet 包更新应支持包源映射 - #14307

  • dotnet 包更新到特定版本 - #14306

  • dotnet 包更新初始版本 - #14305

  • [Bug Bash][不稳定]错误“尝试除以零”。 执行命令“dotnet list [ProjectPath] package --vulnerable” - #14122

  • [功能]: dotnet list [project | solution] 包不适用于解决方案筛选器 - #11789

Visual Studio 中的包管理器 UI

  • 将搜索控件转换为 Fluent UI - #14469

  • 将 Fluent TextBox 用于项目 PM UI 已安装版本 - #14466

  • [Bug Bash]PM UI 的版本下拉列表中存在一个小差距 - #11990

  • [Bug Bash]PM UI 的下拉列表不区分选定项和悬停项之间的背景色 - #10977

  • [Bug Bash]使用 Tab 键将焦点放在“版本”下拉框时,按键盘上的向下翻页按钮会使框为空 - #13605

  • 死代码:ActionsAndVersions 视图 - #14464

Visual Studio 选项

  • 退役旧版 VS 选项的 NuGet 设置 - #14398

  • 在“选项”对话框中添加 http 源时,让用户单击复选框以更明确地同意正在添加的 AllowInsecureConnections - #14377

  • 没有 AllowInsecureConnections 的 HTTP 源的包源设置中所需的错误 - #14367

  • 改进 Visual Studio 选项中 NuGet 设置的验证 - #14359

  • 键入时显示 NuGet 选项页上的验证错误 - #14358

  • [Bug Bash][不稳定]第一次从“包源映射”列表中移除源映射不起效 - #13520

  • [本地化]“Options-NuGet> 包管理器->包源映射”页中的表标题“包源映射”未本地化 - #14550

  • [Bug Bash] 先前在“选项-NuGet 包管理器-包源”窗口中的“全局包源”列表中禁用脱机包源后,无法再次启用它 - #13434

  • [Bug Bash]“添加新包源映射”对话框的“源”列未设置最小宽度,这使得它可以被拉出视野 - #13355

  • [Bug Bash] 当所有的源都被删除时,“选项”对话框第一次重新打开时,应该在“包源”列表中恢复默认包源“Microsoft Visual Studio Offline Packages” - #13278

  • [Bug Bash]“选项->NuGet 包管理器->包源映射”窗口中新添加的包源映射不应区分大小写 - #13210

  • [Bug Bash]从“Option-NuGet> 包管理器”窗口中其他选项卡切换回“包源映射”选项卡后,新添加的包源映射将丢失 - #13150

  • [Bug Bash]在“包源映射”列表中未选择任何包源映射时,应禁用“删除”按钮 - #13115

  • [CSY] 重复的快捷键显示在“选项-NuGet> 包管理器->包源”对话框中 - #7822

  • VS NuGet PMUI - 计算机级别的包源区域也应该支持垂直尺寸调整 - #7560

  • [Bug Bash] 修改源“Microsoft Visual Studio 脱机包”的名称时,会出现重复的包源 - #13057

  • [Bug Bash] 勾选或取消勾选任何具有重复源的包源的“启用”复选框后,“Options-NuGet 包管理器-包源”页面将被禁用 - >

  • 必须手动选择“添加包源”对话框中的预填充文本 - #14450

  • 更新名称时,VS 不应删除包源属性 - #14370

包修剪

  • PrunePackageReference 的推出警告 - #14126

  • 当 nuget.org 不是包源时,缺少“nuget 安装”中的审核警告 - #14096

  • 无法推送到通过命令行指定的 HTTP 源 - #14047

  • 针对 .NET 10 的所有项目(包括多目标项目)启用包裁剪 - #14345

  • 将开启修剪的架构移动到 NuGet.targets - #14424

  • 将_RestorePackagePruningDefault更改为 RestorePackagePruningDefault - #14511

Restore

  • dotnet restore/Visual Studio 与 .esproj + Nx project.json 发生冲突 - #13512

  • 在修剪与锁定模式一起使用时改进 NU1004 - #14075

  • 请考虑不编写 NuGetToolVersion 以在还原时生成 MSBuild 属性文件 - #14355

  • 安装 SQL Server Management Studio 21 时 NuGet 还原失败 - #14349

  • 删除NUGET_EXPERIMENTAL_USE_NJ_FOR_FILE_PARSING - #14257

  • 删除 RestoreTargetGraph.Name,因为 restoreTargetGraph.TargetGraphName 是广泛使用的版本 - #14529

  • 删除 RestoreArgs.LockFileVersion,因为它的功能未使用 - #14524

  • 删除NUGET_BULK_RESTORE_COORDINATION和NUGET_SOLUTION_CACHE_INITIALIZATION回退 - #14502

依赖项解析程序

  • 新的依赖项解析程序无法正确处理浮动预发行版版本 - #13833

  • 使用锁定文件重新实现新算法解析 - #13800

Other

  • 停止 ilmerging 程序包 - #13079

  • 使 NuGet.Client 的 Build.ps1 在 VSCode 中对 GitHub Copilot 更友好 - #14453

  • 在重复生成时生成相同的 [Content_Types].xml - #14357

  • pack legacy csproj:在 VS 生成工具中包含包目标和任务 - #14520

  • 当解决方案中唯一的项目是 project.json 项目时 VS 崩溃 - #14553

  • 查看异常处理 - #14440

  • 通过避免冗余字典查找来提高性能 - #14432

  • LockFileLibrary 无需变动 - #14385

此版本中的提交列表

社区贡献

感谢所有帮助使这次 NuGet 发布变得精彩的贡献者!

  • SimonCropp
    • 6720 删除冗余的默认构造函数
    • 6610 在 GetNupkgInfo 的消息中添加“无最低版本要求”
    • 6581 删除 MarkTransitiveOrigin 中的冗余字典查找
    • 6596 在 PackageItemViewModelTests 中启用可为 null 性
    • 6634 删除 IFrameworkTargetable
    • 6616 避免在 PluginFindPackageByIdResource 中进行冗余版本分析
    • 6595 在 ReadmePreviewViewModelTests 中启用可空性
    • 6587 删除 ProcessUnrankedEntries 中的冗余字典查找
    • 6598 在 EmbeddedResourcesCapabilityTests 中启用空值性
    • 6577 使用字段而不是专用属性
    • 6622 删除 GetPackagesToBeReinstalled 中的未使用列表
    • projectManagerService.GetMetadataAsync 返回值的 6589 冗余 null 检查
    • 6605 在 VSRestoreSettingsUtilityTests 中启用可空性
    • 6575 删除 CredentialServiceAdapter.GetCredentials 中的冗余字典查找
    • 6601 在 NuGetInstallCommandTest 中启用 nullabe
    • 6593 在 IProjectContextInfoExtensionsTests 中启用可为 null
    • 6614 删除 DependencyGraphFileRequestProvider 中的冗余列表
    • 6625 删除 PackageExtractor 中的未使用的变量
    • 6609 修复 UnresolvedMessages 中的空值问题
    • 6608 删除未使用的 contextForGather。
    • 6628 删除 CredentialsItem 中的冗余枚举
    • 6617 删除 MSBuildRestoreUtility 中的 toolItems 列表实例
    • 6599 修复 Constructor_SetReportAbuseUrl_Initialize 中参数的可空性问题...
    • 在 LegacyPackageReferenceProjectTests 中启用可空特性 6604
    • 6631 删除 DependencyGraphSpecRequestProvider.CollectReferences
    • 6635 删除 EnvDteProjectExtensions.PathComparer
    • 6623 删除 ManifestSchemaUtility 中的冗余 GetManifestResourceNames
    • 6619 删除未使用的 packageID 变量
    • 6620 删除 PackageManagerControl 中的未使用的变量
    • 6640 删除冗余异常处理
    • 6637 删除 PackageManagerControl.AddMigratorBar
    • 6629 删除 ResolverMetadataClient 中的未使用的 HashSet 实例
    • 6602 在 MSBuildUtilityTest 中启用可空类型
    • 6641 删除 UpdateCommand.ExecuteCommandAsync 中的冗余 null 条件
    • 6683 删除 GetTempFilePath 中的冗余字符串分配
    • 6626 删除 SignedPackageArchiveIOUtility 中的未使用的变量
    • 6574 删除 CreatePackageSourceMappingDictionary 中的冗余字典查找
    • 6594 在 InfiniteScrollListTests 中启用可空性
    • 6682 在 SafeReadAsync 中使用异步延迟
    • 在 NuGetUpdateCommandTests 中启用可为 null 的 6600
    • 6606 在 VSNominationUtilitiesTests 中启用可为空
    • 6613 删除 GetExternalProject 中的冗余类型变量
    • 6611 删除未使用的 solutionService 实例
    • 6643 删除 MsBuildUtility.GetMsBuildPathInPathVar
    • 6632 删除 PackageSpecFactory.GetTargetFrameworkStrings
    • 6573 在 ProjectFactory.ProcessDependencies 方法中避免某些内存分配
    • 6588 从 GetPreviewResultsAsync 中删除字典查找
    • 6597 修复 PackageModelCreationTestHelper 中的 null 性
    • 6612 删除 NuGetPackageManager 中的未使用列表实例
    • 6591 启用可为 null 在 PackageSourceValidatorTests 中
    • 6603 修复 IVsProjectBuildProperties 中的可空性
    • 6636 从 PackageReferenceProject 中删除_project* 字段
    • 6630 删除 LocalV3FindPackageByIdResource 中的未使用的标识实例
    • 6618 删除 NuGetPackageManager 中的 LoggerAdapter 实例
    • 6621 删除 SolutionUpToDateChecker 中的未使用 projectsByUniqueName
    • 6624 删除 PackageBuilder 中未使用的变量
    • 6633 删除 JsonPackageSpecReader 的分隔字符串标记和版本分隔符
    • 6642 使用强制转换而不是 as,并在 CommandLineParser.AssignValue 中进行 null 检查。
    • 6615 删除 GetPluginAsync 中的冗余列表
    • 6627 删除 MisplacedAssemblyOutsideLibRule 中的未使用的 GetDirectoryName
    • 6578 删除 PrunePackageTree.PruneDowngrades 中的冗余字典查找
    • 6576 删除 RecommenderPackageFeed 中的冗余字典查找
  • 男爵费尔
    • 6554 修复 NuGet-SDK> Codeflow
    • 6514 在还原期间固定并稳定 NuGetToolVersion 生成的 NuGet 属性文件中的属性。
  • omajid
    • 6500 确保 Content_Types.xml 中的条目顺序稳定
    • 6507 当完全签名不可用时,在 Linux 上构建支持
  • AlexDelepine
    • 6793 更新 VS 的 Ngen 优先级
  • hickford
    • 6475 一致地填入审核来源
  • nohwnd
    • 6735 禁用实用程序 powershell.exe 调用中的加载配置文件
  • mmitche
    • 6539 将 NuGet 移动到 xliff-tasks
  • dkurepa
    • 6644 添加 Version.Details.props
  • bdukes
    • 6530 修复 nuget.exe 将 MSBuild 的查找方式从 Visual Studio 还原到 SSMS
  • ToddGrun
    • 6519 出于性能和理智原因使 LockFileLibrary 不可变