Поделиться через


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

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-разрядных платформ.

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

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

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

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

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

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

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

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

      Замечание

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

    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 в файле проекта.

Ссылки на сборки 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.