共用方式為


配置專案以目標平臺為對象

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 的目標平臺

Configuration Manager 提供了一種方式,讓您可以快速新增一個新平台作為專案的目標。 如果您選取 Visual Studio 隨附的其中一個平臺,則會設定組態來建置所選平台的專案。

若要以原生C++專案中的某些平台為目標,您需要安裝平臺的建置工具。 C++ x86 和 x64 平台的建置工具會隨預設C++工作負載一起安裝。 如果您的目標是另一個處理器架構,例如 Arm64,則需要使用 Visual Studio 安裝程式來安裝平臺的建置工具,然後再繼續。 請參閱 修改 Visual Studio。 您不需要在 Arm64 裝置上執行 Visual Studio,即可以 Arm64 為目標。 針對 Arm64,您可以安裝 Arm64 建置工具或 ARM64EC 建置工具;請參閱 Arm64 Visual Studio

針對 .NET 開發,需要 .NET 6 或更新版本才能以Arm64平台為目標。 請參閱 適用於 macOS 11 和 Windows 11 for Arm64 和 x64 的 .NET 支援

若要將項目設定為以Arm64和其他平台為目標

  1. 在功能表欄上,選擇 [建置>組態管理員]。

  2. 在 [ 作用中解決方案平臺 ] 清單中,選擇要設為目標的方案平臺,然後選擇 [ 關閉 ] 按鈕。

    1. 如果您想要的平臺未出現在 [ 使用中解決方案平臺 ] 清單中,請選擇 [ 新增]。 安裝特定平臺的工具之後,您將能夠新增以該平台為目標的新方案和項目組態。

      [新增方案平台] 對話方塊隨即出現。

    2. 在 [ 輸入或選取新的平臺 ] 清單中,選擇所需的平台(處理器架構):例如, ARM64

      顯示選擇新平台的螢幕快照。

      備註

      如果您為組態提供新名稱,您可能必須修改 專案設計 工具中的設定,以正確的平台為目標。

    3. 如果您想要從目前的平台組態複製設定,請選擇它,然後選擇 [ 確定] 按鈕。

顯示新解決方案平臺和專案平臺的螢幕快照

若要將專案設定為針對不同的平台

  1. 在功能表欄上,選擇 [建置>組態管理員]。

  2. 在 [ 作用中解決方案平臺 ] 清單中,選擇要設為目標的方案平臺,然後選擇 [ 關閉 ] 按鈕。

    1. 如果您想要的平臺未出現在 [ 使用中解決方案平臺 ] 清單中,請選擇 [ 新增]。 安裝特定平臺的工具之後,您將能夠新增以該平台為目標的新方案和項目組態。

      [新增方案平台] 對話方塊隨即出現。

    2. 在 [ 輸入或選取新的平臺 ] 清單中,選擇所需的平台(處理器架構):例如, x64

      備註

      如果您為組態提供新名稱,您可能必須修改 專案設計 工具中的設定,以正確的平台為目標。

    3. 如果您想要從目前的平台組態複製設定,請選擇它,然後選擇 [ 確定] 按鈕。

備註

Win32 平台名稱用於C++專案,表示 x86。 Visual Studio 同時考慮專案層級平臺和方案層級平臺,而專案平臺則來自語言特定的項目系統。 C++專案使用 Win32x64,但解決方案平臺使用 x86x64。 當您選擇 x86 作為解決方案組態時,Visual Studio 會選取適用於C++專案的 Win32 平臺。 若要查看專案層級平臺和方案層級平台設定,請開啟 Configuration Manager 並記下兩個平台設定。 方案層級平台會顯示在 [ 使用中方案平臺 ] 下拉式清單中,而數據表會顯示每個專案的專案層級平臺。 顯示解決方案平臺和專案平臺的螢幕快照

項目設計工具或專案屬性UI中的目標平臺

[專案設計師]或[專案屬性]UI也提供了一種方式,讓您的專案能夠針對不同的平台。 如果選取 [ 新增方案平臺 ] 對話框中清單中所包含的其中一個平臺不適用於您的解決方案,您可以建立自定義組態名稱,並修改 [專案屬性 ] 中的設定,以以正確的平臺為目標。

執行這項工作會根據您使用的程式設計語言而有所不同。 如需詳細資訊,請參閱下列連結:

偏好 32 位設定

.NET Framework 4.5 或更新版本專案之專案設計工具的 [置] 頁面中的 [偏好 32 位] 設定會處理您要建AnyCPU置組態的情況,但您希望應用程式在支援 32 位和 64 位模式的平臺上執行時,以 32 位模式執行。 如果您開啟複選框,組建 PlatformTarget 屬性會設定為 anycpu32bitpreferred。 請參閱適用於 C# 的 PlatformTarget 和適用於 Visual Basic 的 /platform 上的批注。

手動編輯項目檔

有時候,您必須手動編輯某些自定義組態的項目檔。 例如,當您有一些無法在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元素,以設定x86為所需的平台架構(例如 x64PropertyGroup)。

參考 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 專案檔架構參考