Compartir a través de


Cambio del directorio de salida de compilación

Puede especificar la ubicación de salida generada por el proyecto según la configuración (para depuración, versión o ambos). Con la configuración predeterminada, las carpetas de salida varían según el tipo de proyecto y el SDK, con algunos proyectos que usan subcarpetas específicas de la plataforma o específicas del marco.

Visual Studio proporciona propiedades que permiten colocar la salida intermedia y final en carpetas personalizadas especificando las rutas de acceso relativas a la carpeta del proyecto o una ruta de acceso absoluta en cualquier lugar del sistema de archivos. Además de la configuración que especifique en las propiedades del proyecto de Visual Studio, también puede personalizar aún más la salida editando el archivo de proyecto y usando las funcionalidades de MSBuild y el SDK de .NET para un control completo sobre todos los aspectos de la salida del proyecto, ya sea para proyectos individuales o en el nivel de solución para muchos proyectos.

Cambio del directorio de salida de compilación

  1. Limpie el proyecto o la solución para quitar los archivos de salida existentes (Compilar>Limpiar solución).

  2. Para abrir las páginas de propiedades del proyecto, haga clic con el botón derecho en el nodo del proyecto en Explorador de Soluciones y seleccione Propiedades.

  3. Seleccione la pestaña adecuada en función del tipo de proyecto:

    • Para C#, seleccione la pestaña Compilar.
    • Para Visual Basic, seleccione la pestaña Compilar.
    • En C++ o JavaScript, seleccione la pestaña General.
  4. Elija en la lista desplegable de configuración de la parte superior la configuración cuya ubicación del archivo de salida desea cambiar (Depurar, Release, o Todas las configuraciones).

  5. Busque la entrada de la ruta de acceso de salida en la página; varía según el tipo de proyecto:

    • Ruta de acceso de salida para proyectos de C# y JavaScript
    • Ruta de acceso de salida de compilación para proyectos de Visual Basic
    • directorio de salida para proyectos de Visual C++

    Escriba la ruta de acceso donde se va a generar la salida (absoluta o relativa con respecto al directorio raíz del proyecto) o seleccione Examinar para ir a esa carpeta.

    Propiedad de ruta de salida de un proyecto de C# de Visual Studio

    Nota

    Algunos proyectos (.NET y ASP.NET Core) incluirán de forma predeterminada la versión del marco o el identificador en tiempo de ejecución en la ruta de acceso de compilación. Para cambiar esto, haga clic con el botón derecho en el nodo del proyecto en Explorador de soluciones, seleccione Editar archivo de proyectoy agregue lo siguiente:

    <PropertyGroup>
      <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
      <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
    </PropertyGroup>
    

Sugerencia

Si la salida no se genera en la ubicación especificada, asegúrese de compilar la configuración correspondiente (por ejemplo, Debug o Release) seleccionándola en la barra de menús de Visual Studio.

Selector de configuración de compilación en Visual Studio 2019.

Compilación en un directorio de salida común

De forma predeterminada, Visual Studio compila cada proyecto en una solución en su propia carpeta dentro de la solución. Puede cambiar las rutas de salida de la compilación de los proyectos para forzar que todos los resultados se almacenen en la misma carpeta.

Para colocar todas las salidas de la solución en un directorio común

  1. Limpie la solución para quitar los archivos de salida existentes (Compilar>Limpiar solución).

  2. Haga clic en un proyecto de la solución.

  3. En el menú Proyecto, haga clic en Propiedades.

  4. En cada proyecto, en función de su tipo, seleccione Compilar o Construiry establezca la Ruta de salida o la Ruta de salida base en una carpeta que se utilizará para todos los proyectos de la solución.

  5. Abra el archivo de proyecto del proyecto y agregue la siguiente declaración de propiedad al primer grupo de propiedades.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <UseCommonOutputDirectory>true</UseCommonOutputDirectory>
    </PropertyGroup>
    

    Al establecer UseCommonOutputDirectory en true se indica a Visual Studio y su motor de compilación subyacente (MSBuild) que está colocando varias salidas de proyecto en la misma carpeta, por lo que MSBuild omite el paso de copia que normalmente ocurre cuando los proyectos dependen de otros proyectos.

  6. Repita los pasos del 2 al 5 para todos los proyectos de la solución. Puede omitir algunos proyectos si tiene algunos proyectos excepcionales que no deben usar el directorio de salida común.

Para establecer el directorio de salida intermedio para un proyecto (proyectos de .NET)

  1. Limpie el proyecto para quitar los archivos de salida existentes.

  2. Abra el archivo del proyecto.

  3. Agregue la siguiente declaración de propiedad al primer grupo de propiedades.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <IntermediateOutputPath>path</IntermediateOutputPath>
    </PropertyGroup>
    

    La ruta de acceso es relativa al archivo del proyecto o puede usar una ruta de acceso absoluta. Si desea colocar el nombre del proyecto en la ruta de acceso, puede hacer referencia a él mediante las propiedades de MSBuild $(MSBuildProjectName), $(MSBuildProjectDirectory). Para obtener información sobre otras propiedades que puede usar, consulte Propiedades reservadas y conocidas de MSBuild.

  4. Visual Studio todavía crea la carpeta obj en la carpeta del proyecto cuando se compila, pero está vacía. Puede eliminarlo como parte del proceso de compilación. Una manera de hacerlo es agregar un evento posterior a la compilación para ejecutar el siguiente comando:

    rd "$(ProjectDir)obj" /s /q
    

    Consulte Especificación de eventos de compilación personalizados.

En Visual Studio 2022, hay diferentes interfaces de usuario del Diseñador de proyectos, en función del tipo de proyecto. Los proyectos de .NET Framework usan el Diseñador de proyectos de .NET heredado, pero los proyectos de .NET Core (y .NET 5 y versiones posteriores) usan el Diseñador de proyectos de .NET actual. Los proyectos de C++ usan su propia interfaz de usuario de páginas de propiedades. Los pasos de esta sección dependen del Diseñador de proyectos que esté usando.

Cambio del directorio de salida de compilación

Este procedimiento se aplica a los proyectos de Visual Studio 2022 destinados a .NET Core o .NET 5 y versiones posteriores.

  1. Limpie el proyecto o la solución para quitar los archivos de salida existentes (Compilar>Limpiar solución).

  2. Haga clic con el botón derecho en el nodo del proyecto en el Explorador de Soluciones y seleccione Propiedades.

  3. Para los proyectos de C#, expanda la sección Build y desplácese hacia abajo hasta la subsección Output. En Visual Basic, expanda la sección Compilar y busque en General.

  4. Busque la Ruta de acceso de la salida base y escriba la ruta de acceso donde se va a generar la salida (absoluta o relativa con respecto al directorio raíz del proyecto), o bien seleccione Examinar para ir a esa carpeta. Tenga en cuenta que el nombre de configuración se anexa a la ruta de salida base para generar la ruta de salida real.

    C#:

    Captura de pantalla que muestra la propiedad Ruta de acceso de salida de un proyecto de C# de .NET Core.

    Visual Basic:

    Captura de pantalla que muestra la propiedad Ruta de acceso de salida para un proyecto de Visual Basic de .NET Core.

    Nota

    Algunos proyectos (.NET y ASP.NET Core) incluirán de forma predeterminada la versión del marco de trabajo o el identificador de tiempo de ejecución en la ruta de salida final. Para cambiar esto, haga clic con el botón derecho en el nodo del proyecto en Explorador de soluciones, seleccione Editar archivo de proyectoy agregue lo siguiente:

    <PropertyGroup>
      <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
      <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
    </PropertyGroup>
    

Compilación en un directorio de salida común

De forma predeterminada, Visual Studio compila cada proyecto en una solución en su propia carpeta dentro de la solución. Puede cambiar las rutas de salida de la compilación de los proyectos para forzar que todos los resultados se almacenen en la misma carpeta.

  1. Limpie la solución para quitar los archivos de salida existentes (Compilar>Limpiar solución).

  2. Haga clic en un proyecto de la solución.

  3. En el menú Proyecto, haga clic en Propiedades.

  4. En cada proyecto, en función de su tipo, seleccione Compilar o Compilary establezca la ruta de salida o la ruta base de salida en una carpeta que se usará para todos los proyectos de la solución.

  5. Abra el archivo de proyecto del proyecto y agregue la siguiente declaración de propiedad al primer grupo de propiedades.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <UseCommonOutputDirectory>true</UseCommonOutputDirectory>
    </PropertyGroup>
    

    Al establecer UseCommonOutputDirectory en true se indica a Visual Studio y su motor de compilación subyacente (MSBuild) que está colocando varias salidas de proyecto en la misma carpeta, por lo que MSBuild omite el paso de copia que normalmente ocurre cuando los proyectos dependen de otros proyectos.

  6. Repita los pasos del 2 al 5 para todos los proyectos de la solución. Puede omitir algunos proyectos si tiene algunos proyectos excepcionales que no deben usar el directorio de salida común.

Sugerencia

Si la salida no se genera en la ubicación especificada, asegúrese de compilar la configuración correspondiente (por ejemplo, Debug o Release) seleccionándola en la barra de menús de Visual Studio.

Captura de pantalla del selector de configuración de compilación en Visual Studio 2022.

Establecer el directorio de salida intermedio para un proyecto

Este procedimiento se aplica a los proyectos de Visual Studio 2022 destinados a .NET Core o .NET 5 y versiones posteriores.

  1. Limpie el proyecto para quitar los archivos de salida existentes.

  2. Abra el archivo del proyecto.

  3. Agregue la siguiente declaración de propiedad al primer grupo de propiedades.

    <PropertyGroup>
      <!-- existing property declarations are here -->
      <IntermediateOutputPath>path</IntermediateOutputPath>
    </PropertyGroup>
    

    La ruta de acceso es relativa al archivo del proyecto o puede usar una ruta de acceso absoluta. Si desea colocar el nombre del proyecto en la ruta de acceso, puede hacer referencia a él mediante las propiedades de MSBuild $(MSBuildProjectName), $(MSBuildProjectDirectory). Para obtener información sobre otras propiedades que puede usar, consulte Propiedades reservadas y conocidas de MSBuild.

  4. Visual Studio todavía crea la carpeta obj en la carpeta del proyecto cuando se compila, pero está vacía. Puede eliminarlo como parte del proceso de compilación. Una manera de hacerlo es agregar un evento posterior a la compilación para ejecutar el siguiente comando:

    rd "$(ProjectDir)obj" /s /q
    

    Consulte Especificación de eventos de compilación personalizados.

Use Directory.Build.props para establecer el directorio de salida.

Si tiene un gran número de proyectos y desea cambiar la carpeta de salida para todos ellos, sería tedioso y propenso a errores cambiar cada uno con los métodos descritos anteriormente en este artículo. En tales casos, puede crear un archivo en la carpeta de la solución, Directory.Build.props, para establecer las propiedades adecuadas de MSBuild en un solo lugar, para aplicar a todos los proyectos de la solución. Al colocar un archivo con este nombre en particular en la carpeta primaria de todos los proyectos que desea que se vean afectados, puede mantener fácilmente las personalizaciones en un solo lugar y facilitar el cambio de los valores. Consulte Personalizar la compilación por carpeta.

Uso de artefactos para organizar la salida de compilación

En el caso de los proyectos de .NET 8, puede usar la funcionalidad de artefactos para organizar la salida de una manera muy personalizable y flexible. Consulte Diseño de salida de artefactos.