將專案設定為以平台為目標

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 位元平台為目標。

使用組態管理員設定目標平台

[組態管理員] 可讓您快速加入新平台,以成為專案的目標。 如果您選取 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 平台為目標。 請參閱適用於 Arm64 和 x64 之 macOS 11 和 Windows 11 的 .NET 支援

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

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

  2. 在 [使用中的方案平台] 清單中,選擇平台作為方案的目標,然後選擇 [關閉] 按鈕。

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

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

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

      Screenshot showing choosing a new platform.

      注意

      如果您將組態改為新的名稱,則必須在 [專案設計工具] 中修改設定,才能以正確的平台為目標。

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

Screenshot showing the new solution platform and project platform

若要將專案設定為以不同的平台為目標

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

  2. 在 [使用中的方案平台] 清單中,選擇平台作為方案的目標,然後選擇 [關閉] 按鈕。

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

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

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

      注意

      如果您將組態改為新的名稱,則必須在 [專案設計工具] 中修改設定,才能以正確的平台為目標。

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

注意

Win32 平台名稱用於 C++ 專案,表示 x86。 Visual Studio 同時考慮專案層級平台和方案層級平台,而專案平台則來自語言特定的專案系統。 C++ 專案使用 Win32x64,但方案平台使用 x86x64。 當您選擇 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,且針對 Debug 和 Release 設定以及 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 專案檔結構描述參考