面向多个框架版本和平台

通过使用 MSBuild,可以编译应用程序,以在 .NET Framework 的任意一个版本和多个系统平台上运行。 例如,可以将应用程序编译为在 32 位平台上的 .NET Framework 2.0 上运行,并编译相同的应用程序,以便在 64 位平台上的 .NET Framework 4.5 上运行。

注意

本文章描述了一种较旧的多目标编译类型,适用于 .NET Framework 的生成过程,在这种方式下,一个项目在同一时间内只能面向一个框架和一个平台。 在 .NET Core 和 .NET 5 及更高版本中,可以使用项目文件中的 TargetFrameworks (plural) 属性来使用较新的多目标类型。 使用 dotnet build 或类似的 .NET CLI 命令或重新加载项目后使用 Visual Studio 进行生成时,生成将使用较新的多目标类型,其中针对列出的每个目标框架执行一次多个生成。 请参阅 目标框架

MSBuild 在目标设定中的一些功能如下:

  • 可以开发面向早期版本的 .NET Framework 的应用程序,例如版本 2.0、3.5 或 4。

  • 您可以以 .NET Framework 以外的框架为目标,例如 Silverlight Framework。

  • 可以一个框架配置文件为目标,该文件是目标框架的预定义子集

  • 如果已发布 .NET Framework 当前版本的 Service Pack,则可以将其作为目标。

  • MSBuild 目标保证应用程序仅使用目标框架和平台中提供的功能。

目标框架和平台

目标框架 是项目要运行的 .NET Framework 版本,目标平台 是项目要运行的系统平台。 例如,你可能希望以 .NET Framework 2.0 应用程序为目标,以在与 80x86 处理器系列(x86)兼容的 32 位平台上运行。 目标框架和目标平台的组合称为 目标上下文。 有关详细信息,请参阅 目标框架和目标平台

工具集 (ToolsVersion)

工具集收集用于创建应用程序的工具、任务和目标。 工具集包括编译器,如 csc.exevbc.exe、通用目标文件(microsoft.common.targets),以及常见任务文件(microsoft.common.tasks)。 4.5 工具集可用于针对 .NET Framework 版本 2.0、3.0、3.5、4 和 4.5。 但工具集 2.0 仅可用于面向 .NET Framework 版本 2.0。 有关详细信息,请参阅 工具集(ToolsVersion)

引用程序集

工具集中指定的引用程序集有助于设计和生成应用程序。 这些引用程序集不仅启用特定的目标生成,而且还将 Visual Studio IDE 中的组件和功能限制为与目标兼容的组件和功能。 有关详细信息,请参阅在设计时解析程序集

配置目标和任务

可以将 MSBuild 目标和任务配置为在独立进程中运行,以便你可以在与当前运行环境截然不同的上下文中执行这些操作。 例如,即使开发计算机运行在具有 .NET Framework 4.5 的 64 位平台上,您也可以将目标设定为 32 位 .NET Framework 2.0 应用程序。 有关详细信息,请参阅 配置目标和任务

故障 排除

如果尝试引用不属于目标上下文的程序集,则可能会遇到错误。 有关这些错误及如何处理它们的详细信息,请参阅 排查 .NET Framework 目标定位错误