Configuración de proyectos para plataformas de destino

Visual Studio permite configurar las compilaciones de la aplicación para distintas plataformas de destino (arquitecturas de procesador), incluidas las de Arm64 y otras plataformas. No es necesario ejecutar Visual Studio en una plataforma para compilar para esa plataforma de destino. Para obtener más información sobre la compatibilidad con Arm64 en Visual Studio, consulte Visual Studio en dispositivos con tecnología ARM. Para obtener información sobre la compatibilidad con plataformas de 64 bits para el desarrollo en .NET, consulte Aplicaciones de 64 bits.

Nota

Visual Studio 2022 se ejecuta como una aplicación de 64 bits. Esto es totalmente independiente de las plataformas de destino para los proyectos de Visual Studio. Puede usar cualquier versión de Visual Studio para establecer como destino plataformas de 32 y 64 bits.

Visual Studio permite configurar las compilaciones de su aplicación para apuntar a distintas plataformas (arquitecturas de procesador), como x86 y x64. Para obtener información sobre la compatibilidad con plataformas de 64 bits para el desarrollo en .NET, consulte Aplicaciones de 64 bits.

Nota

Visual Studio se ejecuta como una aplicación de 32 bits. Esto es totalmente independiente de las plataformas de destino para los proyectos de Visual Studio. Puede usar cualquier versión de Visual Studio para establecer como destino plataformas de 32 y 64 bits.

Configurar plataformas de destino con el Administrador de configuración

El Administrador de configuración proporciona una forma de agregar rápidamente nuevas plataformas de destino para el proyecto. Si selecciona una de las plataformas que se incluyen con Visual Studio, las propiedades del proyecto se modifican para que pueda compilar para esa plataforma.

Para apuntar a algunas plataformas en un proyecto nativo de C++, debe instalar las herramientas de compilación para la plataforma. Las herramientas de compilación de C++ para las plataformas x86 y x64 se instalan con la carga de trabajo predeterminada de C++. Si tiene como destino otra arquitectura de procesador, como Arm64, deberá usar el Instalador de Visual Studio para instalar las herramientas de compilación de la plataforma antes de continuar. Vea Modificación de Visual Studio. No es necesario ejecutar Visual Studio en un dispositivo Arm64 para tener como destino Arm64. Para Arm64, puede instalar herramientas de compilación de Arm64 o herramientas de compilación de ARM64EC; consulte Visual Studio, versión Arm64.

Para el desarrollo en .NET, se requiere .NET 6, u otra versión posterior, para tener como destino la plataforma Arm64. Consulte Compatibilidad de .NET con macOS 11 y Windows 11 para Arm64 y x64.

Configurar un proyecto para apuntar a Arm64 y otras plataformas

  1. En la barra de menús, elija Compilar>Administrador de configuración.

  2. En la lista Plataforma de soluciones activas, elija una plataforma de 64 bits para la solución de destino y luego elija el botón Cerrar.

    1. Si la plataforma que quiere no aparece en la lista Plataforma de soluciones activas, seleccione Nueva. Después de instalar las herramientas para una plataforma determinada, podrá agregar las nuevas configuraciones de solución y proyecto destinadas a esa plataforma.

      Aparecerá el cuadro de diálogo Nueva plataforma de solución.

    2. En la lista Escriba o seleccione la nueva plataforma, elija la plataforma deseada (arquitectura del procesador); por ejemplo, ARM64.

      Screenshot showing choosing a new platform.

      Nota

      Si asigna un nuevo nombre a la configuración, es posible que tenga que modificar la configuración del Diseñador de proyectos para seleccionar la plataforma correcta como destino.

    3. Si quiere copiar la configuración de una configuración de plataforma actual, selecciónela y luego elija el botón Aceptar.

Screenshot showing the new solution platform and project platform

Configurar un proyecto para tener como destino una plataforma diferente

  1. En la barra de menús, elija Compilar>Administrador de configuración.

  2. En la lista Plataforma de soluciones activas, elija una plataforma de 64 bits para la solución de destino y luego elija el botón Cerrar.

    1. Si la plataforma que quiere no aparece en la lista Plataforma de soluciones activas, seleccione Nueva. Después de instalar las herramientas para una plataforma determinada, podrá agregar las nuevas configuraciones de solución y proyecto destinadas a esa plataforma.

      Aparecerá el cuadro de diálogo Nueva plataforma de solución.

    2. En la lista Escriba o seleccione la nueva plataforma, elija la plataforma deseada (arquitectura del procesador); por ejemplo, x64.

      Nota

      Si asigna un nuevo nombre a la configuración, es posible que tenga que modificar la configuración del Diseñador de proyectos para seleccionar la plataforma correcta como destino.

    3. Si quiere copiar la configuración de una configuración de plataforma actual, selecciónela y luego elija el botón Aceptar.

Nota

El nombre de la plataforma Win32 se utiliza para los proyectos de C++, y significa x86. Visual Studio tiene en cuenta las plataformas de nivel de proyecto y las plataformas de nivel de solución, y las plataformas de proyecto provienen de los sistemas de proyecto específicos del lenguaje. Los proyectos de C++ utilizan Win32 y x64, pero las plataformas de solución usan x86 y x64. Al elegir x86 como la configuración de la solución, Visual Studio selecciona la plataforma Win32 para los proyectos de C++. Para ver la configuración de la plataforma de nivel de proyecto y de la plataforma de nivel de solución, abra Administrador de configuración y anote las dos configuraciones de plataforma. La plataforma de nivel de solución se muestra en la lista desplegable Plataforma de soluciones activas y en la tabla se muestra la plataforma de nivel de proyecto para cada proyecto. Screenshot showing solution platform and project platform

Plataformas de destino en la interfaz de usuario del Diseñador de proyectos o de Propiedades del proyecto

La interfaz de usuario del Diseñador de proyectos o de Propiedades del proyecto también proporciona una forma de configurar distintas plataformas para el proyecto de destino. Si la selección de una de las plataformas incluidas en la lista del cuadro de diálogo Nueva plataforma de solución no funciona para la solución, puede crear un nombre de configuración personalizado y modificar la configuración en Propiedades del proyecto a fin de configurar el proyecto para la plataforma de destino apropiada.

La realización de esta tarea varía según el lenguaje de programación utilizado. Para obtener más información, vea los siguientes vínculos:

Edición manual del archivo del proyecto

A veces hay que modificar manualmente el archivo de proyecto debido a alguna configuración personalizada. Un ejemplo es cuando se tienen condiciones que no se pueden especificar en el IDE, como una referencia que es diferente para dos plataformas distintas, o un ensamblado que debe registrarse para una plataforma concreta con el fin de exponerlo a COM. La herramienta que procesa el archivo del proyecto es MSBuild.

Precaución

No se recomienda editar manualmente un archivo de proyecto de C++ que esté usando en Visual Studio.

Registro COM

Si va a compilar un ensamblado de .NET y exponerlo a COM, Visual Studio registra el ensamblado con una arquitectura de plataforma determinada, ya que hay diferentes ubicaciones del registro para cada arquitectura de plataforma (por ejemplo, x86 y x64). Si el ensamblado ya tiene como destino una plataforma específica, se usa, pero si va a registrar un ensamblado de .NET compilado para Any CPU, el valor predeterminado de MSBuild es registrarlo para el entorno de ejecución actual de MSBuild. Si va a compilar en Visual Studio, se encuentra x64 en Visual Studio 2022 y versiones posteriores, y x86 en Visual Studio 2019 y versiones anteriores. Si establece la arquitectura de la plataforma mediante los métodos descritos anteriormente en este artículo o especifica otro PlatformTarget en el archivo de proyecto, MSBuild respetará eso al registrarse. Hay una propiedad que puede establecer para invalidar este comportamiento, RegisterAssemblyMSBuildArchitecture. Puede establecer RegisterAssemblyMSBuildArchitecture en la arquitectura de plataforma deseada (como x86 o x64) agregándola a un elemento de nivel superior PropertyGroup en el archivo del proyecto.

Referencia a ensamblados y DLL de x86 y x64

Puede que tenga un ensamblado .NET o DLL que tenga las versiones tanto x86 como x64. Para configurar el proyecto para que use estas referencias, primero agregue la referencia y, después, abra el archivo de proyecto y edítelo para agregar un elemento ItemGroup con una condición que haga referencia a la configuración y a la plataforma de destino. Por ejemplo, supongamos que el archivo binario al que está haciendo referencia es ClassLibrary1 y que hay varias rutas de acceso distintas para las configuraciones Debug y Release, así como las versiones x86 y x64. Use cuatro elementos ItemGroup con todas las combinaciones de configuraciones, como aquí:

<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 más información sobre el archivo de proyecto, vea Referencia de esquemas del archivo del proyecto MSBuild.