【问题标题】:VS2017 does not include Microsoft.Bcl.Build, yet VS2015 doesVS2017 不包含 Microsoft.Bcl.Build,而 VS2015 包含
【发布时间】:2026-02-10 21:00:01
【问题描述】:

我们发现 Visual Studio 2017 的 Azure 云服务 (.NET Framework 4.5) 项目的包中不包含 Microsoft.Bcl.Build。在 Visual Studio 2015 下构建和打包的同一项目确实包含 Microsoft.Bcl.Build。

我们在将包投入 Azure 中以及报告缺少依赖项的 Web 角色时确定是否包含。通过比较 bin 文件夹也可以看出这一点。

为什么 VS 2017 不包含它应该包含的内容?

这是项目的 nuget 依赖项的图片。

【问题讨论】:

  • 因为没必要。 Bcl.Async、Bcl.Build 包只是 .NET 4.0 应用程序的权宜之计,以允许它们使用 async/await 关键字。如果您的目标是 4.5+,则在 VS 2015 中也不需要它们。您的项目首先不应该依赖它们
  • 也许你应该升级你的Microsoft.Azure.Common包?最新版本是 2.1.4,没有那些依赖
  • BTW Microsoft.WindowsAzure.Management.Sql 也已过时。它已经 3 岁了。当前包是Microsoft.Azure.Management.Sql
  • @PanagiotisKanavos 我会回去验证,但我记得尝试升级需要迁移到更新的 .NET 版本的 nuget 包。我们目前使用 .NET 4.5。
  • 最早支持的 .NET 版本是 4.5.2,但 new不需要,它们会添加自己的依赖项。

标签: visual-studio azure azure-sql-database azure-sdk-.net


【解决方案1】:

Microsoft.WindowsAzure.Management.Sql 已过时,自 2015 年以来没有任何版本。它已被 Microsoft.Azure.Management.Sql 取代,它没有这些依赖项。您应该升级到该软件包。

请注意,Bcl 包是Microsoft.Azure.Common 版本的依赖项。该软件包在当前版本中也不需要它们。如果您无法升级到最新的 Azure SQL 管理包,也许您应该升级 Microsoft.Azure.Common 包。

VS 2015 和 VS 2017 都不会添加 Microsoft.Bcl 或 Microsoft.Bcl.Async。这些包是在 2012 年作为权宜之计创建的,以允许使用 C# 4 的应用程序使用 async/await 关键字。他们添加了运行时和编译器扩展来理解async/await 关键字并生成异步状态机。 Visual Studio 2012 本身能够以 C# 5 为目标,因此它不需要该包。

这些包仅供未升级到 C# 5 的旧库使用。

【讨论】: