Compartir vía


Cambiar el 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.

Cambiar el 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 el Explorador de soluciones y seleccione Propiedades.

  3. Seleccione la pestaña adecuada según el tipo de proyecto:

    • Para C#, seleccione la pestaña Compilar.
    • Para Visual Basic, seleccione la pestaña Compilar.
    • Para C++ o JavaScript, seleccione la pestaña General.
  4. En la lista desplegable de configuración de la parte superior, seleccione la configuración cuya ubicación del archivo de salida quiera cambiar (Depuración, Versión 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 acceso 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 del 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 el Explorador de soluciones, seleccione Editar archivo de proyecto y 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 que va a crear la configuración correspondiente (por ejemplo, Depuración o Versión) al seleccionarla 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 manera 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 soluciones que se generan en un mismo directorio

  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 Generar, y establezca la Ruta de acceso de la salida o la Ruta de acceso de la salida base 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>
    

    Establecer UseCommonOutputDirectory en true le indica a Visual Studio y a su motor de compilación subyacente (MSBuild) que va a colocar varias salidas de proyecto en la misma carpeta, por lo que MSBuild omite el paso de copia que normalmente se produce cuando los proyectos dependen de otros proyectos.

  6. Repita los pasos 2 a 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.

Establecimiento del 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 crea la carpeta obj en la carpeta del proyecto al compilar, pero está vacía. Puede eliminarla como parte del proceso de compilación. Una manera de hacerlo es agregar un evento posterior a la compilación para ejecutar el comando siguiente:

    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. .NET Framework de C# y todos los proyectos de Visual Basic usan el Diseñador de proyectos de .NET heredado, pero los proyectos de .NET Core (así como de .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.

Cambiar el directorio de salida de compilación

Este procedimiento se aplica a proyectos de C# en 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. En el Explorador de soluciones, haga clic con el botón secundario en el nodo del proyecto y seleccione Propiedades.

  3. Expanda la sección Compilación y desplázate hacia abajo hasta la subsección Salida.

  4. Busque la Ruta de acceso de la salida base para C# 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 acceso de la salida base para generar la ruta de acceso de la salida real.

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

    Nota:

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

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

Compilación en un directorio de salida común

De manera 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 Generar, y establezca la Ruta de acceso de la salida o la Ruta de acceso de la salida base 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>
    

    Establecer UseCommonOutputDirectory en true le indica a Visual Studio y a su motor de compilación subyacente (MSBuild) que va a colocar varias salidas de proyecto en la misma carpeta, por lo que MSBuild omite el paso de copia que normalmente se produce cuando los proyectos dependen de otros proyectos.

  6. Repita los pasos 2 a 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 que va a crear la configuración correspondiente (por ejemplo, Depuración o Versión) al seleccionarla en la barra de menús de Visual Studio.

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

Establecimiento del directorio de salida intermedio para un proyecto

Este procedimiento se aplica a proyectos de C# en 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 crea la carpeta obj en la carpeta del proyecto al compilar, pero está vacía. Puede eliminarla como parte del proceso de compilación. Una manera de hacerlo es agregar un evento posterior a la compilación para ejecutar el comando siguiente:

    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 de MSBuild adecuadas 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 Personalización de 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.