Compartir a través de


Delete (tarea)

Elimina los archivos especificados.

Parámetros

En la siguiente tabla se describen los parámetros de la tarea Delete .

Parámetro Descripción
DeletedFiles Parámetro de salida ITaskItem[] opcional.

Especifica los archivos que se eliminaron correctamente.
Files Parámetro ITaskItem[] requerido.

Especifica los archivos que se van a eliminar.
TreatErrorsAsWarnings Parámetro Boolean opcional.

Si es true, los errores se registran como advertencias. El valor predeterminado es false.

Comentarios

Además de los parámetros mencionados anteriormente, esta tarea hereda los parámetros de la clase TaskExtension, que a su vez hereda de la clase Task. Para obtener una lista de estos parámetros adicionales y sus descripciones, consulte TaskExtension base class.

Advertencia

Tenga cuidado al usar comodines con la tarea Delete. Puede eliminar fácilmente los archivos equivocados con expresiones como $(SomeProperty)\**\*.* o $(SomeProperty)/**/*.*, especialmente si la propiedad se evalúa como una cadena vacía, en cuyo caso el parámetro Files puede evaluarse como raíz de la unidad y eliminar mucho más de lo que se quiere.

Ejemplos

En el ejemplo siguiente se elimina el archivo ConsoleApp1.pdb al compilar el destino DeleteDebugSymbolFile.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

    <PropertyGroup>
        <AppName>ConsoleApp1</AppName>
    </PropertyGroup>

    <Target Name="DeleteDebugSymbolFile">
        <Message Text="Deleting $(OutDir)$(AppName).pdb"/>
        <Delete Files="$(OutDir)$(AppName).pdb" />
    </Target>
  
</Project>

Si necesita realizar un seguimiento de los archivos eliminados, establezca TaskParameter en DeletedFiles con el nombre de elemento, como se indica a continuación:

      <Target Name="DeleteDebugSymbolFile">
        <Delete Files="$(OutDir)$(AppName).pdb" >
              <Output TaskParameter="DeletedFiles" ItemName="DeletedList"/>
        </Delete>
        <Message Text="Deleted files: '@(DeletedList)'"/>
    </Target>

En lugar de usar caracteres comodines directamente en la tarea Delete, cree un grupo ItemGroup de archivos que se vayan a eliminar y ejecute en él la tarea Delete. No obstante, asegúrese de colocar ItemGroup con cuidado. Si coloca ItemGroup en el nivel superior de un archivo de proyecto, se evalúa antes de que se inicie la compilación, por lo que no incluirá los archivos compilados como parte del proceso de compilación. Por lo tanto, coloque el grupo ItemGroup que crea la lista de elementos que se van a eliminar en un destino cercano a la tarea Delete. También puede especificar una condición para comprobar que la propiedad no está vacía, así que no creará una lista de elementos con una ruta de acceso que se inicie en la raíz de la unidad.

En el ejemplo siguiente, se eliminan todos los archivos con la extensión .orig que hay en una carpeta determinada.

<Project>
  <Target Name="DeleteFiles" AfterTargets="Build">
     <ItemGroup>
       <FilesToDelete Include="source\*.orig"/>
     </ItemGroup>
     <Message Text="Deleting Files @(FilesToDelete)"/>
     <Delete Files="@(FilesToDelete)">
       <Output 
          TaskParameter="DeletedFiles"
          ItemName="FilesDeleted"/>
     </Delete>
     <Message Text="Files deleted: @(FilesDeleted)"/>
  </Target>
</Project>

Nota

Al usar caracteres comodín para la eliminación de archivos generados durante el proceso de compilación, tenga en cuenta cuándo se produce la expansión de caracteres comodín en el proceso de compilación. En el ejemplo anterior, ItemGroup junto con la expansión de caracteres comodín se encuentra en el mismo destino que la eliminación, lo que garantiza que cualquier archivo creado antes de ese destino se incluya en la lista de eliminación. Los grupos de elementos en el nivel superior se expanden en tiempo de evaluación, lo que hace que se pierdan los archivos generados más adelante en el proceso de compilación.

La tarea Delete está pensada para eliminar archivos. Si quiere eliminar un directorio, use RemoveDir.

La tarea Delete no proporciona una opción para eliminar archivos de solo lectura. Para ello, puede usar la tarea Exec para ejecutar el comando del o equivalente, con la opción adecuada para permitir la eliminación de archivos de solo lectura. Debe prestar atención a la longitud de la lista de elementos de entrada, ya que hay una limitación de longitud en la línea de comandos; además, asegúrese de usar los nombres de archivo con espacios, como en este ejemplo:

<Target Name="DeleteReadOnly">
  <ItemGroup>
    <FileToDelete Include="read only file.txt"/>
  </ItemGroup>
  <Exec Command="del /F /Q &quot;@(FileToDelete)&quot;"/>
</Target>

En general, al escribir scripts de compilación, tenga en cuenta si la eliminación es una parte lógica de una operación Clean. Si necesita configurar algunos archivos para que se limpien como parte de una operación Clean normal, puede agregarlos a la lista @(FileWrites) y se eliminarán en la siguiente operación Clean. Si se necesita más procesamiento personalizado, defina un destino y especifique que se ejecute mediante el establecimiento del atributo BeforeTargets="Clean" o AfterTargets="Clean", o bien defina la versión personalizada de los destinos BeforeClean o AfterClean. Consulte Personalizar una compilación.

Vea también