Cómo: Generar todos los archivos de un directorio excepto uno

Actualización: noviembre 2007

En un archivo de proyecto, se pueden utilizar comodines para incluir todos los archivos de un directorio o un conjunto de directorios anidado como entradas para una generación. Sin embargo, es posible que exista un archivo en el directorio o un directorio en el conjunto de directorios anidado que no se desee incluir como entrada para una generación. Dicho archivo o directorio se puede excluir explícitamente de la lista de entradas. También es posible que exista un archivo en un proyecto que sólo se desee incluir con determinadas condiciones. Se pueden declarar explícitamente las condiciones para incluir un archivo en una generación.

Excluir un archivo o directorio de las entradas para una generación

Las colecciones de elementos constituyen los archivos de entrada para una generación. Los elementos que se desean incluir se declaran, de forma independiente o como grupo, usando el atributo Include. Por ejemplo:

<CSFile Include="Form1.cs"/>
<CSFile Include ="File1.cs;File2.cs"/>
<CSFile Include="*.cs"/>
<JPGFile Include="Images\**\*.jpg"/>

Si se han utilizado comodines para incluir todos los archivos de un directorio o un conjunto de directorios anidado como entradas para una generación, es posible que haya uno o varios archivos en el directorio o un directorio en el conjunto anidado que no se desee incluir. Para excluir un elemento de la colección de elementos, utilice el atributo Exclude.

Para incluir todos los archivos .cs o .vb excepto Form2

  • Utilice uno de los atributos Include y Exclude siguientes:

    <CSFile Include="*.cs" Exclude="Form2.cs"/>
    

    O bien

    <VBFile Include="*.vb" Exclude="Form2.vb"/>
    

Para incluir todos los archivos .cs o .vb excepto Form2 y Form3

  • Utilice uno de los atributos Include y Exclude siguientes:

    <CSFile Include="*.cs" Exclude="Form2.cs;Form3.cs"/>
    

    O bien,

    <VBFile Include="*.vb" Exclude="Form2.vb;Form3.vb"/>
    

Para incluir todos los archivos .jpg en subdirectorios del directorio Images, excepto los que se encuentran en el directorio Version2

  • Utilice los atributos Include y Exclude siguientes:

    <JPGFile 
        Include="Images\**\*.jpg" 
        Exclude = "Images\**\Version2\*.jpg"/>
    
    Nota:

    Debe especificar la ruta de acceso de ambos atributos. Si utiliza una ruta de acceso absoluta para especificar las ubicaciones de los archivos en el atributo Include, también debe utilizar una ruta de acceso absoluta en el atributo Exclude; si utiliza una ruta relativa en el atributo Include, también debe utilizar una ruta relativa en el atributo Exclude.

Utilizar condiciones para excluir un archivo o directorio de las entradas para una generación

Si existen elementos que se desean incluir, por ejemplo, en una versión de depuración pero no en una versión de lanzamiento, se puede utilizar el atributo Condition para especificar las condiciones en las que incluir el elemento.

Para incluir el archivo Formula.vb sólo en versiones de lanzamiento (release)

  • Utilice un atributo Condition similar al siguiente:

    <Compile 
        Include="Formula.vb" 
        Condition=" '$(Configuration)' == 'Release' " />
    

Ejemplo

En el ejemplo de código siguiente se genera un proyecto con todos los archivos .cs en el directorio excepto Form2.cs.

<Project DefaultTargets="Compile"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >

    <PropertyGroup>
        <builtdir>built</builtdir>
    </PropertyGroup>

    <ItemGroup>
        <CSFile Include="*.cs Exclude="Form2.cs"/>

        <Reference Include="System.dll"/>
        <Reference Include="System.Data.dll"/>
        <Reference Include="System.Drawing.dll"/>
        <Reference Include="System.Windows.Forms.dll"/>
        <Reference Include="System.XML.dll"/>
    </ItemGroup>

    <Target Name="PreBuild">
        <Exec Command="if not exist $(builtdir) md $(builtdir)"/>
    </Target>

    <Target Name="Compile" DependsOnTargets="PreBuild">
        <Csc Sources="@(CSFile)"
            References="@(Reference)"
            OutputAssembly="$(builtdir)\$(MSBuildProjectName).exe"
            TargetType="exe" />
    </Target>
</Project>

Vea también

Tareas

Cómo: Utilizar caracteres comodín para generar todos los archivos de un directorio

Conceptos

Elementos de MSBuild

MSBuild