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和其他平台為目標
在功能表欄上,選擇 [建置>組態管理員]。
在 [ 作用中解決方案平臺 ] 清單中,選擇要設為目標的方案平臺,然後選擇 [ 關閉 ] 按鈕。
如果您想要的平臺未出現在 [ 使用中解決方案平臺 ] 清單中,請選擇 [ 新增]。 安裝特定平臺的工具之後,您將能夠新增以該平台為目標的新方案和項目組態。
[新增方案平台] 對話方塊隨即出現。
在 [ 輸入或選取新的平臺 ] 清單中,選擇所需的平台(處理器架構):例如,
ARM64
。備註
如果您為組態提供新名稱,您可能必須修改 專案設計 工具中的設定,以正確的平台為目標。
如果您想要從目前的平台組態複製設定,請選擇它,然後選擇 [ 確定] 按鈕。
若要將專案設定為針對不同的平台
在功能表欄上,選擇 [建置>組態管理員]。
在 [ 作用中解決方案平臺 ] 清單中,選擇要設為目標的方案平臺,然後選擇 [ 關閉 ] 按鈕。
如果您想要的平臺未出現在 [ 使用中解決方案平臺 ] 清單中,請選擇 [ 新增]。 安裝特定平臺的工具之後,您將能夠新增以該平台為目標的新方案和項目組態。
[新增方案平台] 對話方塊隨即出現。
在 [ 輸入或選取新的平臺 ] 清單中,選擇所需的平台(處理器架構):例如,
x64
。備註
如果您為組態提供新名稱,您可能必須修改 專案設計 工具中的設定,以正確的平台為目標。
如果您想要從目前的平台組態複製設定,請選擇它,然後選擇 [ 確定] 按鈕。
備註
Win32 平台名稱用於C++專案,表示 x86。 Visual Studio 同時考慮專案層級平臺和方案層級平臺,而專案平臺則來自語言特定的項目系統。 C++專案使用 Win32 和 x64,但解決方案平臺使用 x86 和 x64。 當您選擇 x86 作為解決方案組態時,Visual Studio 會選取適用於C++專案的 Win32 平臺。 若要查看專案層級平臺和方案層級平台設定,請開啟 Configuration Manager 並記下兩個平台設定。 方案層級平台會顯示在 [ 使用中方案平臺 ] 下拉式清單中,而數據表會顯示每個專案的專案層級平臺。
項目設計工具或專案屬性UI中的目標平臺
[專案設計師]或[專案屬性]UI也提供了一種方式,讓您的專案能夠針對不同的平台。 如果選取 [ 新增方案平臺 ] 對話框中清單中所包含的其中一個平臺不適用於您的解決方案,您可以建立自定義組態名稱,並修改 [專案屬性 ] 中的設定,以以正確的平臺為目標。
執行這項工作會根據您使用的程式設計語言而有所不同。 如需詳細資訊,請參閱下列連結:
針對 Visual Basic 專案,請參閱 /platform (Visual Basic) 。
針對 C# 專案,請參閱 建置頁面、項目設計工具 (C#) 。
偏好 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 會向特定平台架構註冊元件,因為每個平台架構都有不同的登錄位置(例如 x86
和 x64
)。 如果您的元件已經以特定平臺為目標,則會使用該平臺,但如果您要註冊為 Any CPU
建置的 .NET 元件,MSBuild 預設會使用 MSBuild 的目前運行時來註冊。 如果您要在 Visual Studio 中建置,在 Visual Studio 2022 及更新版本中使用 x64
,而在 Visual Studio 2019 和更早版本中使用 x86
。 如果您使用本文先前所述的方法來設定平台架構,或在項目檔中指定不同的 PlatformTarget
方法,MSBuild 會在註冊時遵守該架構。 有一個屬性可以設定來覆寫此行為。 RegisterAssemblyMSBuildArchitecture
您可以將它新增至項目檔中的最上層RegisterAssemblyMSBuildArchitecture
元素,以設定x86
為所需的平台架構(例如 x64
或 PropertyGroup
)。
參考 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 專案檔架構參考。