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

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

Замечание

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

Целевые платформы, конфигурируемые с помощью Configuration Manager

Configuration Manager предоставляет способ быстрого добавления новой платформы в целевой объект проекта. При выборе одной из платформ, включенных в 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. Если вы хотите скопировать параметры из текущей конфигурации платформы, выберите ее и нажмите кнопку "ОК ".

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

Замечание

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

Чтобы настроить проект для платформы Arm64 и других целевых платформ

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

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

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

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

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

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

      Замечание

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

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

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

Замечание

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

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

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

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

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

Параметр "Предпочитать 32-разрядную " на странице "Сборка " конструктора проектов для .NET Framework 4.5 или более поздних версий обрабатывает ситуацию, когда вы создаете AnyCPU конфигурацию, но требуется, чтобы приложение выполнялось в 32-разрядном режиме при выполнении на платформах, поддерживающих как 32-разрядные, так и 64-разрядные режимы. Если вы установите флажок, для свойства сборки 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 в файле проекта.

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

У вас может быть сборка .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.