Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En un archivo de proyecto, puede usar caracteres comodín para incluir todos los archivos de un directorio o un conjunto anidado de directorios como entradas para una compilación. Sin embargo, puede haber un archivo en el directorio o un directorio en un conjunto anidado de directorios que no quiera incluir como entrada para una compilación. Puede excluir explícitamente ese archivo o directorio de la lista de entradas. También puede haber un archivo en un proyecto que solo desee incluir en determinadas condiciones. Puede declarar explícitamente las condiciones en las que se incluye un archivo en una compilación.
Nota:
Las técnicas descritas en este artículo no son aplicables a F# y C++. Esos sistemas de proyecto administran los propios archivos de origen.
Exclusión de un archivo mediante Visual Studio
Si usa Visual Studio, seleccione el archivo en el Explorador de soluciones, vea la ventana Propiedades (presione Alt+Entrar) y establezca la acción de compilación en Ninguno.
Esto da como resultado los siguientes cambios en el archivo de proyecto de MSBuild:
<ItemGroup>
<Compile Remove="ClassToExclude.cs" />
</ItemGroup>
<ItemGroup>
<None Include="ClassToExclude.cs" />
</ItemGroup>
Esto funciona bien para algunos archivos, pero no se escala verticalmente a un mayor número de archivos o archivos que coinciden con un patrón determinado. En los proyectos de .NET, puede usar MSBuild para excluir archivos y directorios mediante una expresión comodín, también denominada glob, como se describe a continuación.
Exclusión de archivos o directorios en proyectos de .NET
Las listas de elementos son los archivos de entrada de una compilación. Para la mayoría de los proyectos, como los proyectos del SDK de .NET, hay listas de elementos predefinidos de distintos tipos de elementos (por ejemplo, Compile
para archivos de código fuente, Content
para determinados archivos estáticos, etc.) que ya están definidos por las importaciones estándar. Puede encontrar una lista de estos elementos en Elementos comunes del proyecto de MSBuild. En el código del proyecto, estos están predefinidos para incluir todo lo pertinente; por ejemplo, Compile
en un proyecto de C# se incluyen todos los archivos con la .cs
extensión .
Para excluir archivos, puede usar el Remove
atributo en el elemento.
<ItemGroup>
<Compile Remove="ClassToExclude.cs" />
</ItemGroup>
Puede especificar varios archivos individuales o varios patrones globales:
<ItemGroup>
<Compile Remove="Contoso*.cs" /> <!-- Wildcard on filename -->
<Compile Remove="File1.cs;File2.cs" /> <!-- List of files with separator -->
<Compile Remove="Contoso/**/*.cs" /> <!-- All .cs files in a directory subtree -->
</ItemGroup>
Para obtener una lista de patrones admitidos, consulte Formatos de patrón.
Incluir y excluir archivos o directorios en el lenguaje MSBuild
En el lenguaje MSBuild sin procesar (es decir, sin ninguna de las importaciones estándar o referencia a un SDK), los elementos que desea incluir se declaran por separado o como un grupo mediante el Include
atributo . Por ejemplo:
<CSFile Include="Form1.cs"/>
<CSFile Include ="File1.cs;File2.cs"/>
<CSFile Include="*.cs"/>
<JPGFile Include="Images\**\*.jpg"/>
Si usa caracteres comodín para incluir todos los archivos de un directorio o un conjunto anidado de directorios como entradas para una compilación, puede haber uno o varios archivos en el directorio o en un directorio del conjunto anidado de directorios que no desea incluir. Para excluir un elemento de la lista de elementos, use el Exclude
atributo .
Exclude
no es realmente una operación de elemento; no se puede usar por sí mismo, sino solo como modificador para Include
.
Para incluir todos los .cs
archivos o .vb
excepto Form2
Use uno de los atributos y
Include
siguientesExclude
:<CSFile Include="*.cs" Exclude="Form2.cs"/>
o
<VBFile Include="*.vb" Exclude="Form2.vb"/>
Para incluir todos los .cs
archivos o .vb
excepto Form2
y Form3
Use uno de los atributos y
Include
siguientesExclude
:<CSFile Include="*.cs" Exclude="Form2.cs;Form3.cs"/>
o
<VBFile Include="*.vb" Exclude="Form2.vb;Form3.vb"/>
Para incluir todos los .jpg
archivos en subdirectorios del Images
directorio, excepto los del Version2
directorio
Utilice los siguientes atributos
Include
yExclude
:<JPGFile Include="Images\**\*.jpg" Exclude = "Images\**\Version2\*.jpg"/>
Nota:
Debe especificar la ruta de acceso para ambos atributos. Si usa una ruta de acceso absoluta para especificar ubicaciones de archivo en el
Include
atributo, también debe usar una ruta de acceso absoluta en elExclude
atributo; si usa una ruta de acceso relativa en elInclude
atributo, también debe usar una ruta de acceso relativa en elExclude
atributo .
Excluir y quitar
Si va a definir sus propias listas de elementos, debe usar Exclude
siempre que sea posible. Hay una ventaja de rendimiento para usar Exclude
en la misma declaración que Include
, ya que los elementos que se excluirían no tienen que procesarse.
Use Remove
cuando tenga una lista de elementos predefinida, como en el caso de las listas de elementos estándar como Compile
y Content
. En ese caso, Exclude
no está admitido.
Nota:
Si usa un SDK que lo admita, puede establecer la $(OverrideDefaultCompileItems)
propiedad en true
y definir su propio Compile
elemento con Include
y, opcionalmente, Exclude
.
Usar condiciones para excluir un archivo o directorio de las entradas de una compilación
Si hay elementos que desea incluir, por ejemplo, en una compilación de depuración, pero no en una compilación release, puede usar el Condition
atributo para especificar las condiciones en las que se debe incluir el elemento.
Para incluir el archivo Formula.vb solo en compilaciones de versión
Use un
Condition
atributo similar al siguiente:<Compile Include="Formula.vb" Condition=" '$(Configuration)' == 'Release' " />
Ejemplo
En el ejemplo de código siguiente se compila un proyecto con todos los archivos .cs del directorio, excepto Form2.cs.
<Project DefaultTargets="Compile"
xmlns="http://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>