Настройка целевых платформ в проектах

Visual Studio позволяет настроить сборки приложений для различных платформ (архитектур процессоров), включая Arm64 и другие платформы. Для сборки для этой целевой платформы не требуется запускать Visual Studio. Дополнительные сведения о поддержке Arm64 в Visual Studio см . в Visual Studio на устройствах с поддержкой ARM. 64-разрядная поддержка платформы для разработки .NET см . в 64-разрядных приложениях.

Примечание.

Visual Studio 2022 выполняется как 64-разрядное приложение. Она совершенно отделена от платформ, которые можно выбрать для проектов в Visual Studio. Вы можете использовать любую версию Visual Studio, предназначенную для 32-разрядных и 64-разрядных платформ.

Visual Studio позволяет настроить сборки приложения для различных платформ (архитектур процессоров), таких как x86 и x64. 64-разрядная поддержка платформы для разработки .NET см . в 64-разрядных приложениях.

Примечание.

Visual Studio выполняется как 32-разрядное приложение. Она совершенно отделена от платформ, которые можно выбрать для проектов в Visual Studio. Вы можете использовать любую версию Visual Studio, предназначенную для 32-разрядных и 64-разрядных платформ.

Нацеливание на платформы с помощью диспетчера конфигураций

Диспетчер конфигураций позволяет быстро добавить новую платформу для нацеливания проекта. При выборе одной из платформ, включенных в Visual Studio, настройка настраивается для создания проекта для выбранной платформы.

Чтобы нацелиться на некоторые платформы в собственном проекте C++, необходимо установить средства сборки для платформы. Средства сборки C++ для платформ x86 и x64 устанавливаются с рабочей нагрузкой C++ по умолчанию. Если вы используете другую архитектуру процессора, например Arm64, необходимо использовать Visual Studio Installer для установки средств сборки для платформы, прежде чем продолжить. См. раздел Изменение Visual Studio. Вам не нужно запускать Visual Studio на устройстве Arm64 для целевого объекта Arm64. Для Arm64 можно установить средства сборки Arm64 или ARM64EC средства сборки; см. статью Arm64 Visual Studio.

Для разработки .NET требуется .NET 6 или более поздней версии для целевой платформы Arm64. См. сведения о поддержке .NET для macOS 11 и Windows 11 для Arm64 и x64.

Настройка проекта для целевой платформы Arm64 и других платформ

  1. В строке меню последовательно выберите пункты Сборка>Диспетчер конфигураций.

  2. В списке платформы активных решений выберите платформу для целевого решения и нажмите кнопку "Закрыть ".

    1. Если нужная платформа не отображается в списке Активная платформа решения, выберите Создать. После установки средств для определенной платформы вы сможете добавить новое решение и конфигурации проектов, предназначенные для этой платформы.

      Откроется диалоговое окно Создание платформы решения.

    2. Введите или выберите новый список платформ, выберите нужную платформу (архитектуру процессора); напримерARM64.

      Снимок экрана: выбор новой платформы.

      Примечание.

      Если вы присваиваете конфигурации новое имя, может потребоваться изменить параметры в конструкторе проектов для нацеливания на соответствующую платформу.

    3. Если требуется скопировать параметры из текущий конфигурации платформы, выберите ее и нажмите кнопку ОК.

Снимок экрана: новая платформа решения и платформа проекта

Настройка проекта для целевой платформы

  1. В строке меню последовательно выберите пункты Сборка>Диспетчер конфигураций.

  2. В списке платформы активных решений выберите платформу для целевого решения и нажмите кнопку "Закрыть ".

    1. Если нужная платформа не отображается в списке Активная платформа решения, выберите Создать. После установки средств для определенной платформы вы сможете добавить новое решение и конфигурации проекта, предназначенные для этой платформы.

      Откроется диалоговое окно Создание платформы решения.

    2. Введите или выберите новый список платформ, выберите нужную платформу (архитектуру процессора); напримерx64.

      Примечание.

      Если вы присваиваете конфигурации новое имя, может потребоваться изменить параметры в конструкторе проектов для нацеливания на соответствующую платформу.

    3. Если требуется скопировать параметры из текущий конфигурации платформы, выберите ее и нажмите кнопку ОК.

Примечание.

Имя платформы Win32 используется для проектов C++ и соответствует x86. Visual Studio поддерживает платформы уровня проекта и платформы уровня решения. При этом платформы проекта основаны на системах проектов для разных языков. Проекты C++ используют Win32 и x64, а платформы решения — x86 и x64. Когда вы выбираете x86 в качестве конфигурации решения, Visual Studio выбирает для проектов C++ платформу Win32. Чтобы просмотреть параметры платформы уровня проекта и платформы уровня решения, откройте Configuration Manager и обратите внимание на два параметра платформы. Платформа уровня решения отображается в раскрывающемся списке Активная платформа решения, а платформа уровня проекта показана в таблице для каждого проекта. Снимок экрана: платформа решения и платформа проекта

Целевые платформы в пользовательском интерфейсе конструктора проектов или свойств проекта

Пользовательский интерфейс конструктора проектов или свойств проекта также предоставляет способ нацеливать различные платформы в проекте. Если выбор одной из платформ, включенных в список в диалоговом окне "Новая платформа решения", не работает для решения, можно создать пользовательское имя конфигурации и изменить параметры в свойствах проекта, чтобы нацелиться на правильную платформу.

Выполнение этой задачи зависит от используемого языка программирования. Дополнительные сведения см. по следующим ссылкам:

Предпочитать 32-разрядный параметр

32-разрядный параметр на странице сборки конструктора проектов для платформа .NET Framework 4.5 или более поздних проектов обрабатывает ситуацию, когда вы создаете AnyCPU конфигурацию, но вы хотите, чтобы приложение выполнялось в 32-разрядном режиме при выполнении на платформах, поддерживающих как 32-разрядные, так и 64-разрядные режимы. Если включить проверка box, PlatformTarget для свойства сборки задано anycpu32bitpreferredзначение . См. комментарии на платформе PlatformTarget для C# и /platform для Visual Basic.

Изменение файла проекта вручную

Иногда необходимо вручную изменить файл проекта, чтобы выполнить ряд пользовательских настроек. Например, если у вас есть условия, которые не могут быть указаны в интегрированной среде разработки, например ссылка, которая отличается для двух разных платформ, или сборка, которая должна быть зарегистрирована для конкретной платформы, чтобы предоставить ее COM. Средство, обрабатывающее файл проекта, — MSBuild.

Внимание

Не рекомендуется вручную редактировать файл проекта C++, который вы используете в Visual Studio.

Регистрация COM

Если вы создаете сборку .NET и предоставляете ее com, Visual Studio регистрирует сборку с определенной архитектурой платформы, так как для каждой архитектуры платформы существуют разные расположения реестра (например, x86 и x64). Если сборка уже нацелена на определенную платформу, то используется, но если вы регистрируете сборку .NET, созданную для Any CPU, MSBuild по умолчанию регистрирует ее для текущей среды выполнения MSBuild. Если вы создаете в Visual Studio, это x64 в Visual Studio 2022 и более поздних версий, а также x86 в Visual Studio 2019 и более ранних версий. Если вы задаете архитектуру платформы с помощью методов, описанных ранее в этой статье, или укажите другой PlatformTarget в файле проекта, MSBuild будет учитывать это при регистрации. Существует свойство, которое можно задать для переопределения этого поведения. RegisterAssemblyMSBuildArchitecture Вы можете задать RegisterAssemblyMSBuildArchitecture нужную архитектуру платформы (например x86 , или x64) путем добавления его в элемент верхнего уровня PropertyGroup в файле проекта.

Ссылки на сборки x86 и x64 и библиотеки DLL

У вас может быть сборка .NET или библиотека DLL с версиями x86 и x64. Чтобы настроить проект для использования этих ссылок, сначала добавьте ссылку, а затем откройте файл проекта и измените его, чтобы добавить 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.