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++ プロジェクトの一部のプラットフォームを対象にするには、プラットフォーム用のビルド ツールをインストールする必要があります。 x86 および x64 プラットフォーム用の C++ ビルド ツールは、既定の C++ ワークロードと共にインストールされます。 Arm64 などの別のプロセッサ アーキテクチャを対象としている場合は、続行する前に Visual Studio インストーラーを使用してプラットフォームのビルド ツールをインストールする必要があります。 Visual Studio の変更に関するページを参照してください。 Arm64 をターゲットにするために、Arm64 デバイスで Visual Studio を実行する必要はありません。 Arm64 の場合は、Arm64 ビルド ツールまたは ビルド ツールARM64EC インストールできます。 Arm64 Visual Studio を参照してください。
.NET 開発の場合、Arm64 プラットフォームをターゲットにするには .NET 6 以降が必要です。 MacOS 11 と Windows 11 for Arm64 および x64 の .NET サポートを参照してください。
Arm64 やその他のプラットフォームをターゲットにするようにプロジェクトを構成するには
メニュー バーで、[ ビルド>構成マネージャー] を選択します。
[アクティブ なソリューション プラットフォーム] の一覧で、対象となるソリューションのプラットフォームを選択し、[閉じる] ボタンを選択します。
目的のプラットフォームが Active ソリューション プラットフォーム の一覧に表示されない場合は、[ 新規] を選択します。 特定のプラットフォーム用のツールをインストールすると、そのプラットフォームを対象とする新しいソリューションとプロジェクト構成を追加できるようになります。
[新しいソリューション プラットフォーム] ダイアログ ボックスが表示されます。
[ 種類] で、または新しいプラットフォームの 一覧を選択し、目的のプラットフォーム (プロセッサ アーキテクチャ) を選択します。たとえば、
ARM64
。注
構成に新しい名前を付ける場合は、 プロジェクト デザイナー の設定を変更して、適切なプラットフォームをターゲットにする必要がある場合があります。
現在のプラットフォーム構成から設定をコピーする場合は、それを選択し、[ OK] ボタンをクリックします。
別のプラットフォームをターゲットにするようにプロジェクトを構成するには
メニュー バーで、[ ビルド>構成マネージャー] を選択します。
[アクティブ なソリューション プラットフォーム] の一覧で、対象となるソリューションのプラットフォームを選択し、[閉じる] ボタンを選択します。
目的のプラットフォームが Active ソリューション プラットフォーム の一覧に表示されない場合は、[ 新規] を選択します。 特定のプラットフォーム用のツールをインストールすると、そのプラットフォームを対象とする新しいソリューションとプロジェクト構成を追加できるようになります。
[新しいソリューション プラットフォーム] ダイアログ ボックスが表示されます。
[ 種類] で、または新しいプラットフォームの 一覧を選択し、目的のプラットフォーム (プロセッサ アーキテクチャ) を選択します。たとえば、
x64
。注
構成に新しい名前を付ける場合は、 プロジェクト デザイナー の設定を変更して、適切なプラットフォームをターゲットにする必要がある場合があります。
現在のプラットフォーム構成から設定をコピーする場合は、それを選択し、[ OK] ボタンをクリックします。
注
Win32 プラットフォーム名は C++ プロジェクトに使用され、x86 を意味します。 Visual Studio では、プロジェクト レベルのプラットフォームとソリューション レベルのプラットフォームの両方が考慮され、プロジェクト プラットフォームは言語固有のプロジェクト システムから取得されます。 C++ プロジェクトでは Win32 と x64 が使用されますが、ソリューション プラットフォームでは x86 と x64 が使用されます。 ソリューション構成として x86 を選択すると、Visual Studio は C++ プロジェクト用の Win32 プラットフォームを選択します。 プロジェクト レベルのプラットフォームとソリューション レベルのプラットフォームの両方の設定を表示するには、 Configuration Manager を 開き、2 つのプラットフォーム設定をメモします。 ソリューション レベルのプラットフォームが [アクティブなソリューション プラットフォーム ] ドロップダウンに表示され、次の表に各プロジェクトのプロジェクト レベルのプラットフォームが表示されます。
プロジェクト デザイナーまたはプロジェクト プロパティ 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 に関するコメントを参照してください。
プロジェクト ファイルを手動で編集する
場合によっては、カスタム構成のためにプロジェクト ファイルを手動で編集する必要があります。 たとえば、2 つの異なるプラットフォームで異なる参照や、COM に公開するために特定のプラットフォームに登録する必要があるアセンブリなど、IDE で指定できない条件がある場合です。 プロジェクト ファイルを処理するツールは 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 バージョンのパスが異なるとします。 次に、次のように、設定のすべての組み合わせで 4 つの 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 プロジェクト ファイルのスキーマ リファレンスを参照してください。