将项目配置为面向平台

可使用 Visual Studio 将应用程序版本设置为面向不同平台(处理器体系结构),包括 Arm64 和其他平台。 无需在平台上运行 Visual Studio 即可针对该目标平台进行生成。 有关 Visual Studio 中 Arm64 支持的详细信息,请参阅支持 ARM 的设备上的 Visual Studio。 有关 .NET 开发的 64 位平台支持,请参阅 64 位应用程序

注意

Visual Studio 2022 作为 64 位应用程序运行。 这完全独立于可以在 Visual Studio 中针对你的项目面向的平台。 可以使用任何版本的 Visual Studio 同时面向 32 位和 64 位平台。

可使用 Visual Studio 将应用程序版本设置为面向不同平台(处理器体系结构),例如 x86 和 x64。 有关 .NET 开发的 64 位平台支持,请参阅 64 位应用程序

注意

Visual Studio 作为 32 位应用程序运行。 这完全独立于可以在 Visual Studio 中针对你的项目面向的平台。 可以使用任何版本的 Visual Studio 同时面向 32 位和 64 位平台。

使用 Configuration Manager 设定目标平台

“配置管理器”提供了一种快速添加面向项目的新平台的方法。 如果选择 Visual Studio 附带的平台之一,则设置配置为所选平台生成项目。

若要以本机 C++ 项目中的某些平台为目标,需要为平台安装生成工具。 适用于 x86 和 x64 平台的 C++ 生成工具随默认 C++ 工作负载一起安装。 如果面向另一个处理器体系结构(例如 Arm64),那么在继续之前,需要使用 Visual Studio 安装程序为平台安装生成工具。 请参阅修改 Visual Studio。 无需在 Arm64 设备上运行 Visual Studio 以面向 Arm64。 对于 Arm64,可以安装 Arm64 生成工具或 ARM64EC 生成工具;请参阅 Arm64 Visual Studio

对于 .NET 开发,.NET 6 或更高版本需要以 Arm64 平台为目标。 请参阅对 macOS 11 和 Windows 11 的 Arm64 和 x64 .NET 支持

配置项目以面向 Arm64 和其他平台

  1. 在菜单栏上,依次选择“生成”>“Configuration Manager” 。

  2. 在“活动解决方案平台”列表中,选择一个平台作为解决方案目标,然后选择“关闭”按钮。

    1. 如果所需平台未出现在“活动解决方案平台”列表中,请选择“新建” 。 为特定平台安装工具后,你将能够添加针对该平台的新解决方案和项目配置。

      此时将显示“新建解决方案平台”对话框。

    2. 在“键入或选择新平台”列表中,选择所需的平台(处理器体系结构);例如 ARM64

      Screenshot showing choosing a new platform.

      注意

      如果对配置进行了重命名,则可能需要修改“项目设计器”中的设置,以面向正确的平台。

    3. 如果要复制当前平台配置的设置,请选择它,然后选择“确定”按钮。

Screenshot showing the new solution platform and project platform

将项目配置为面向不同平台

  1. 在菜单栏上,依次选择“生成”>“Configuration Manager” 。

  2. 在“活动解决方案平台”列表中,选择一个平台作为解决方案目标,然后选择“关闭”按钮。

    1. 如果所需平台未出现在“活动解决方案平台”列表中,请选择“新建” 。 为特定平台安装工具后,你将能够添加针对该平台的新解决方案和项目配置。

      此时将显示“新建解决方案平台”对话框。

    2. 在“键入或选择新平台”列表中,选择所需的平台(处理器体系结构);例如 x64

      注意

      如果对配置进行了重命名,则可能需要修改“项目设计器”中的设置,以面向正确的平台。

    3. 如果要复制当前平台配置的设置,请选择它,然后选择“确定”按钮。

注意

Win32 平台名称用于 C++ 项目,这意味着 x86。 Visual Studio 同时考虑项目级平台和解决方案级平台,并且项目平台来自特定于语言的项目系统。 C++ 项目使用 Win32 和 x64,但解决方案平台使用 x86 和 x64。 选择 x86 作为解决方案配置时,Visual Studio 将为 C++ 项目选择 Win32 平台。 若要查看项目级平台和解决方案级平台设置,请打开“Configuration Manager”并记下这两个平台设置。 解决方案级平台显示在“活动解决方案平台”下拉列表中,表显示每个项目的项目级平台。 Screenshot showing solution platform and project platform

以项目设计器或项目属性 UI 中的平台为目标

“项目设计器”或“项目属性”UI 还提供使项目面向不同平台的方法。 如果在“新解决方案平台”对话框中选择列表中包含的一个平台并不适合你的解决方案,你可以创建自定义配置名称并修改“项目属性”中的配置,以面向正确的平台。

此任务的执行根据所用编程语言而有所不同。 有关详细信息,请参阅以下链接:

手动编辑项目文件

有时,需要手动编辑项目文件以进行某些自定义配置。 例如,当你有无法在 IDE 中指定的条件(例如对两个不同平台而言不同的引用)时,或者必须为特定平台注册的程序集才能将其公开给 COM。 处理项目文件的工具是 MSBuild

注意

建议不要手动编辑在 Visual Studio 中使用的 C++ 项目文件。

COM 注册

如果要生成 .NET 程序集并将其公开给 COM,Visual Studio 会将程序集注册到特定的平台体系结构,因为每个平台体系结构都有不同的注册表位置(例如 x86x64)。 如果程序集已面向特定平台,则使用该平台,但如果要注册为 Any CPU 生成的 .NET 程序集,则 MSBuild 默认为 MSBuild 的当前运行时注册它。 如果要在 Visual Studio 中生成,则这是位于 Visual Studio 2022 及更高版本中的 x64,以及Visual Studio 2019 及更早版本中的 x86。 如果使用本文前面所述的方法设置平台体系结构,或在项目文件中指定其他 PlatformTarget 方法,MSBuild 将在注册时遵循该体系结构。 可以设置一个属性来替代此行为 RegisterAssemblyMSBuildArchitecture。 通过将 RegisterAssemblyMSBuildArchitecture 添加到项目文件中的顶级 PropertyGroup 元素,可以将它设置为所需的平台体系结构(如 x86x64)。

引用 x86 和 x64 程序集和 DLL

你可能拥有同时具有 x86 和 x64 版本的 .NET 程序集或 DLL。 若要将项目设置为使用这些引用,请先添加引用,然后打开项目文件并对其进行编辑,以添加具有同时引用配置和目标平台的条件的 ItemGroup。 例如,假设引用的二进制文件是 ClassLibrary1,并且调试和发布配置以及 x86 和 x64 版本有不同路径。 然后,使用四个包含所有设置组合的 ItemGroup 元素,如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <Platforms>AnyCPU;x64;x86</Platforms>
  </PropertyGroup>

  <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64'">
    <Reference Include="ClassLibrary1">
      <HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x64\Debug\netstandard2.0\ClassLibrary1.dll</HintPath>
    </Reference>
  </ItemGroup>

  <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64'">
    <Reference Include="ClassLibrary1">
      <HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x64\Release\netstandard2.0\ClassLibrary1.dll</HintPath>
    </Reference>
  </ItemGroup>

  <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86'">
    <Reference Include="ClassLibrary1">
      <HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x86\Debug\netstandard2.0\ClassLibrary1.dll</HintPath>
    </Reference>
  </ItemGroup>
  
  <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86'">
    <Reference Include="ClassLibrary1">
      <HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x86\Release\netstandard2.0\ClassLibrary1.dll</HintPath>
    </Reference>
  </ItemGroup>
</Project>

有关项目文件的详细信息,请参阅 MSBuild 项目文件架构引用