プロジェクトを構成してターゲット プラットフォームを設定する

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 をターゲットにするために、Arm64 デバイスで Visual Studio を実行する必要はありません。 Arm64 の場合、Arm64 ビルド ツールまたは ARM64EC ビルド ツールをインストールできます。「Arm64 Visual Studio」をご覧ください。

.NET 開発の場合、Arm64 プラットフォームをターゲットにするには .NET 6 以降が必要です。 「.NET による macOS 11 および Windows 11 での Arm64 と x64 のサポート」をご覧ください。

Arm64 や他のプラットフォームをターゲットにするようにプロジェクトを構成するには

  1. メニュー バーで [ビルド]>[構成マネージャー] の順に選択します。

  2. [アクティブ ソリューション プラットフォーム] の一覧で、ソリューションのターゲットにするプラットフォームを選んで、[閉じる] を選びます。

    1. 必要なプラットフォームが表示されない場合は、 [アクティブ ソリューション プラットフォーム] ボックスの一覧の [新規作成] を選びます。 特定のプラットフォーム用のツールをインストールすると、そのプラットフォームをターゲットとするソリューションとプロジェクトの新しい構成を追加できるようになります。

      [新しいソリューション プラットフォーム] ダイアログ ボックスが表示されます。

    2. [新しいプラットフォームを入力または選択してください] の一覧で、目的のプラットフォーム (プロセッサ アーキテクチャ) を選びます (ARM64 など)。

      Screenshot showing choosing a new platform.

      注意

      構成に新しい名前を指定する場合は、 [プロジェクト デザイナー] で適切なプラットフォームを対象にするよう設定の変更が必要になることがあります。

    3. 現在のプラットフォーム構成から設定をコピーする場合は、構成を選んでから [OK] を選びます。

Screenshot showing the new solution platform and project platform

異なるプラットフォームを対象とするようにプロジェクトを構成するには

  1. メニュー バーで [ビルド]>[構成マネージャー] の順に選択します。

  2. [アクティブ ソリューション プラットフォーム] の一覧で、ソリューションのターゲットにするプラットフォームを選んで、[閉じる] を選びます。

    1. 必要なプラットフォームが表示されない場合は、 [アクティブ ソリューション プラットフォーム] ボックスの一覧の [新規作成] を選びます。 特定のプラットフォーム用のツールをインストールすると、そのプラットフォームをターゲットとするソリューションとプロジェクトの新しい構成を追加できるようになります。

      [新しいソリューション プラットフォーム] ダイアログ ボックスが表示されます。

    2. [新しいプラットフォームを入力または選択してください] の一覧で、目的のプラットフォーム (プロセッサ アーキテクチャ) を選びます (x64 など)。

      注意

      構成に新しい名前を指定する場合は、 [プロジェクト デザイナー] で適切なプラットフォームを対象にするよう設定の変更が必要になることがあります。

    3. 現在のプラットフォーム構成から設定をコピーする場合は、構成を選んでから [OK] を選びます。

注意

Win32 プラットフォーム名は、C++ プロジェクトに使用され、x86 を意味します。 Visual Studio では、プロジェクトレベルのプラットフォームとソリューションレベルのプラットフォームの両方が考慮され、プロジェクト プラットフォームは言語固有のプロジェクト システムから取得されます。 C++ プロジェクトでは Win32x64 が使用されますが、ソリューション プラットフォームでは x86x64 が使用されます。 ソリューション構成として x86 を選択すると、Visual Studio によって C++ プロジェクトに Win32 プラットフォームが選択されます。 プロジェクトレベルのプラットフォームとソリューションレベルのプラットフォームの両方の設定を表示するには、 [構成マネージャー] を開き、2 つのプラットフォームの設定を確認します。 ソリューションレベルのプラットフォームは [アクティブ ソリューション プラットフォーム] ドロップダウンに表示され、テーブルには各プロジェクトのプロジェクトレベルのプラットフォームが表示されます。 Screenshot showing solution platform and project platform

プロジェクト デザイナーまたは [プロジェクトのプロパティ] UI でターゲットのプラットフォームを指定する

プロジェクト デザイナーまたは [プロジェクトのプロパティ] UI にも、さまざまなプラットフォームをプロジェクトのターゲットにする方法が用意されています。 [新しいソリューション プラットフォーム] ダイアログ ボックスの一覧にあるプラットフォームのいずれかを選んでも、ソリューションで機能しない場合は、カスタム構成名を作成し、[プロジェクトのプロパティ] で設定を変更して、適切なプラットフォームをターゲットにすることができます。

このタスクの実行方法は、使用するプログラミング言語によって異なります。 詳細については、次のリンクを参照してください。

プロジェクト ファイルを手動で編集する

カスタムの構成によっては、プロジェクト ファイルを手動で編集しなければならないことがあります。 たとえば、2 つの異なるプラットフォームで異なっている参照や、COM に公開するために特定のプラットフォームに登録する必要があるアセンブリなど、IDE で指定できない条件があるときです。 プロジェクト ファイルを処理するツールは MSBuild です。

注意事項

Visual Studio で使う C++ プロジェクト ファイルを手動で編集することはお勧めしません。

COM 登録

.NET アセンブリをビルドして COM に公開する場合、プラットフォーム アーキテクチャごとにレジストリの場所が異なるため (x86x64 など)、Visual Studio はアセンブリを特定のプラットフォーム アーキテクチャに登録します。 アセンブリで既に特定のプラットフォームがターゲットになっている場合は、それが使われますが、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 バージョンがあります。 その場合、次のように、設定の全組み合わせで 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 プロジェクト ファイル スキーマ リファレンス」を参照してください。