面向多个框架版本和平台
通过使用 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.exe 和 vbc.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 目标定位错误。