Configurar projetos para plataformas de destino

O Visual Studio permite que você configure seus builds de aplicativo para direcionar a diferentes plataformas (arquiteturas de processador), incluindo Arm64 e outras plataformas. Você não precisa executar o Visual Studio em uma plataforma para compilar para essa plataforma de destino. Para obter mais informações sobre o suporte do Arm64 no Visual Studio, confira Visual Studio em dispositivos com o ARM. Para obter suporte à plataforma de 64 bits para desenvolvimento do .NET, confira Aplicativos de 64 bits.

Observação

O Visual Studio 2022 é executado como um aplicativo de 64 bits. Isso é totalmente separado das plataformas às quais você direcionar os seus projetos no Visual Studio. Você pode usar qualquer versão do Visual Studio para direcionar a plataformas de 32 bits e 64 bits.

O Visual Studio permite que você configure seus builds de aplicativo para direcionar a diferentes plataformas (arquiteturas de processador), como x86 e x64. Para obter suporte à plataforma de 64 bits para desenvolvimento do .NET, confira Aplicativos de 64 bits.

Observação

O Visual Studio é executado como um aplicativo de 32 bits. Isso é totalmente separado das plataformas às quais você direcionar os seus projetos no Visual Studio. Você pode usar qualquer versão do Visual Studio para direcionar a plataformas de 32 bits e 64 bits.

Plataformas de destino com o Gerenciador de Configurações

O Configuration Manager oferece uma maneira de adicionar rapidamente uma nova plataforma de destino para seu projeto. Se você selecionar uma das plataformas incluídas no Visual Studio, uma configuração será definida para compilar seu projeto para a plataforma selecionada.

Para direcionar a algumas plataformas em um projeto C++ nativo, você precisa instalar as ferramentas de build para a plataforma. As ferramentas de build do C++ para plataformas x86 e x64 são instaladas com a carga de trabalho padrão do C++. Se você estiver direcionando a outra arquitetura de processador, como Arm64, precisará usar o Instalador do Visual Studio para instalar as ferramentas de build para a plataforma antes de continuar. Confira Modificar o Visual Studio. Você não precisa executar o Visual Studio em um dispositivo Arm64 para direcionar ao Arm64. Para o Arm64, você pode instalar ferramentas de build do Arm64 ou ferramentas de build ARM64EC; confira Arm64 para Visual Studio.

Para o desenvolvimento do .NET, o .NET 6 ou superior é necessário para direcionar à plataforma Arm64. Confira Suporte do .NET para macOS 11 e Windows 11 para Arm64 e x64.

Para configurar um projeto para direcionar ao Arm64 e outras plataformas

  1. Na barra de menus, escolha Build>Gerenciador de Configurações.

  2. Na lista Plataforma da solução ativa, escolha uma plataforma para a solução usar como destino e, em seguida, escolha o botão Fechar.

    1. Se a plataforma que você deseja não aparecer na lista Plataforma da Solução Ativa, escolha Nova. Depois de instalar as ferramentas para uma plataforma específica, você poderá adicionar as novas configurações de solução e projeto direcionadas a essa plataforma.

      A caixa de diálogo Nova plataforma de solução é exibida.

    2. Na lista Digitar ou selecionar a nova plataforma, escolha a plataforma desejada (arquitetura do processador); por exemplo, ARM64.

      Captura de tela mostrando a escolha de uma nova plataforma.

      Observação

      Se você der um novo nome à sua configuração, precisará modificar as configurações no Designer de Projeto para ter a plataforma correta como destino.

    3. Se você quiser copiar as configurações de uma configuração de plataforma atual, escolha-a e selecione o botão OK.

Captura de tela mostrando a nova plataforma de solução e a plataforma de projeto

Para configurar um projeto para direcionar a uma plataforma diferente

  1. Na barra de menus, escolha Build>Gerenciador de Configurações.

  2. Na lista Plataforma da solução ativa, escolha uma plataforma para a solução usar como destino e, em seguida, escolha o botão Fechar.

    1. Se a plataforma que você deseja não aparecer na lista Plataforma da Solução Ativa, escolha Nova. Depois de instalar as ferramentas para uma plataforma específica, você poderá adicionar as novas configurações de solução e projeto direcionadas a essa plataforma.

      A caixa de diálogo Nova plataforma de solução é exibida.

    2. Na lista Digitar ou selecionar a nova plataforma, escolha a plataforma desejada (arquitetura do processador); por exemplo, x64.

      Observação

      Se você der um novo nome à sua configuração, precisará modificar as configurações no Designer de Projeto para ter a plataforma correta como destino.

    3. Se você quiser copiar as configurações de uma configuração de plataforma atual, escolha-a e selecione o botão OK.

Observação

O nome da plataforma Win32 é usado para projetos C++ e significa x86. O Visual Studio considera plataformas de nível de projeto e plataformas de nível de solução, e as plataformas de projeto vêm dos sistemas de projeto específicos a uma linguagem de programação. Os projetos C++ usam Win32 e x64, mas as plataformas de solução usam x86 e x64. Quando você escolhe x86 como a configuração da solução, o Visual Studio seleciona a plataforma Win32 para projetos C++. Para ver as configurações de plataforma no nível do projeto e de plataforma no nível da solução, abra Configuration Manager e observe as duas configurações de plataforma. A plataforma no nível da solução é mostrada na lista suspensa Plataforma de solução ativa e a tabela mostra a plataforma no nível do projeto para cada projeto. Captura de tela mostrando a plataforma de solução e a plataforma de projeto

Direcionar a plataformas na interface do usuário de Propriedades do Projeto ou do Designer de Projeto

A interface do usuário do Designer de Projeto ou das Propriedades de Projeto também permite definir diferentes plataformas como destino para seu projeto. Se selecionar uma das plataformas incluídas na lista na caixa de diálogo Nova Plataforma de Solução não funcionar para sua solução, você poderá criar um nome de configuração personalizado e modificar as configurações nas Propriedades de Projeto para ter a plataforma correta como destino.

A execução dessa tarefa varia de acordo com a linguagem de programação que você está usando. Para obter mais informações, consulte os links a seguir:

Configuração “Preferir 32 bits”

A configuração Preferir 32 bits na página Compilação do designer de projeto para projetos do .NET Framework 4.5 ou posterior lida com o caso em que você está criando a configuração AnyCPU, mas deseja que seu aplicativo seja executado no modo de 32 bits quando em plataformas que oferecem suporte aos modos de 32 bits e 64 bits. Se você habilitar a caixa de seleção, a propriedade de compilação PlatformTarget será definida como anycpu32bitpreferred. Consulte os comentários sobre o PlatformTarget para C# e /platform para Visual Basic.

Edição manual do arquivo de projeto

Às vezes, você precisa editar manualmente o arquivo de projeto para algumas configurações personalizadas. Um exemplo é quando você tem condições que não podem ser especificadas no IDE, como uma referência diferente para duas plataformas diferentes ou um assembly que deve ser registrado para uma plataforma específica para expô-la ao COM. A ferramenta que processa o arquivo de projeto é o MSBuild.

Cuidado

Não é recomendável editar manualmente um arquivo de projeto C++ que você está usando no Visual Studio.

Registro COM

Se você estiver criando um assembly do .NET e expondo-o ao COM, o Visual Studio registrará o assembly com uma arquitetura de plataforma específica, já que há locais de registro diferentes para cada arquitetura de plataforma (por exemplo, x86 e x64). Se o assembly já tiver como destino uma plataforma específica, isso será usado, mas se você estiver registrando um assembly .NET criado para Any CPU, o MSBuild usará como padrão registrá-lo no runtime atual do MSBuild. Se você estiver criando no Visual Studio, isso será x64 no Visual Studio 2022 e vers posteriores e x86 no Visual Studio 2019 e versões anteriores. Se você definir a arquitetura da plataforma usando os métodos descritos anteriormente neste artigo ou especificar um PlatformTarget diferente no arquivo de projeto, o MSBuild respeitará isso ao se registrar. Há uma propriedade que você pode definir para substituir esse comportamento, RegisterAssemblyMSBuildArchitecture. Você pode definir RegisterAssemblyMSBuildArchitecture para a arquitetura de plataforma desejada (como x86 ou x64) adicionando-a a um elemento PropertyGroup de nível superior no arquivo de projeto.

Referenciando assemblies e DLLs x86 e x64

Você pode ter um assembly ou uma DLL .NET com as versões x86 e x64. Para configurar o projeto para usar essas referências, primeiro adicione a referência e, em seguida, abra o arquivo de projeto e edite-o para adicionar um ItemGroup com uma condição que referencie a configuração e a plataforma de destino. Por exemplo, suponha que o binário que você está referenciando seja o ClassLibrary1 e que haja caminhos diferentes para as Configurações de Depuração e Versão, bem como para as versões x86 e x64. Em seguida, use quatro elementos ItemGroup com todas as combinações de configurações, da seguinte maneira:

<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>

Para obter mais informações sobre o arquivo de projeto, confira Referência de esquema do arquivo de projeto do MSBuild.