Diseño de salida de artefactos

En .NET 8 y versiones posteriores, hay una opción para simplificar la ruta de acceso de salida y la estructura de carpetas para las salidas de compilación. Todas las salidas de compilación de todos los proyectos se recopilan en una ubicación común, separadas por proyecto. Una ubicación común facilita la creación de herramientas para anticipar dónde encontrar las salidas.

De forma predeterminada, la ubicación común es un directorio denominado artefactos junto al archivo Directory.build.props. La estructura de carpetas bajo la carpeta de artefactos raíz es la siguiente:

📁 artifacts
    └──📂 <Type of output>
        └──📂 <Project name>
            └──📂 <Pivot>

En la tabla siguiente, se muestran los valores predeterminados para cada nivel de la estructura de carpetas. Puede invalidar los valores, así como la ubicación predeterminada, mediante las propiedades del archivo Directory.build.props.

Nivel de carpeta Descripción Ejemplos
Tipo de salida Categorías de salidas de compilación, como archivos binarios, archivos intermedios o generados, aplicaciones publicadas y paquetes NuGet. bin, obj, publish, package
Nombre de proyecto Separa la salida por proyecto. MyApp
Dinamización Distingue entre compilaciones de un proyecto para diferentes configuraciones, marcos de destino e identificadores en tiempo de ejecución. Si se necesitan varios elementos, se unen con un carácter de subrayado (_). Se puede personalizar mediante la propiedad ArtifactsPivots de MSBuild. debug, debug_net8.0, release, release_linux-x64

Ejemplos

En la tabla siguiente se muestran ejemplos de rutas de acceso que se pueden crear.

Ruta de acceso Descripción
artifacts\bin\MyApp\debug Ruta de acceso de salida de compilación para un proyecto sencillo al ejecutar dotnet build.
artifacts\obj\MyApp\debug Ruta de acceso de salida intermedia para un proyecto simple al ejecutar dotnet build.
artifacts\bin\MyApp\debug_net8.0 Ruta de acceso de salida de compilación para la compilación net8.0 de un proyecto de destino múltiple.
artifacts\publish\MyApp\release_linux-x64 Ruta de acceso de publicación para una aplicación sencilla al publicar para linux-x64.
artifacts\package\MyApp\release Carpeta donde se crea la versión .nupkg para un proyecto.

Cómo se configura

Para optar por el formato de ruta de acceso de salida centralizada, agregue una de las siguientes propiedades de MSBuild al archivo Directory.Build.props:

  • Para usar la ubicación de salida predeterminada, establezca la propiedad UseArtifactsOutput en true.

    <PropertyGroup>
      <UseArtifactsOutput>true</UseArtifactsOutput>
    </PropertyGroup>
    
  • Para establecer una ubicación de salida personalizada, agregue una propiedad ArtifactsPath con un valor de $(MSBuildThisFileDirectory)artifacts (o lo que desee que sea la ubicación de la carpeta). Si aún no tiene un archivo Directory.Build.props, puede ejecutar el siguiente comando para generar automáticamente un archivo que contenga la propiedad ArtifactsPath:

    dotnet new buildprops --use-artifacts
    

    El archivo generado tiene un aspecto similar al siguiente:

    <Project>
      <PropertyGroup>
        <ArtifactsPath>$(MSBuildThisFileDirectory)artifacts</ArtifactsPath>
      </PropertyGroup>
    </Project>
    

El nombre de carpeta "pivot" tiene como valor predeterminado una combinación de moniker de la plataforma de destino (TFM), configuración e identificador de runtime (RID). Se omite cualquiera que no esté presente. Para personalizar el nombre de la carpeta "pivot", establezca la propiedad ArtifactsPivots de MSBuild en la cadena deseada. Por ejemplo:

<PropertyGroup>
  ...
  <ArtifactsPivots>$(ArtifactsPivots)_MyCustomPivot</ArtifactsPivots>
</PropertyGroup>