Поделиться через


Как собрать в каталоге все файлы, кроме одного

Обновлен: Ноябрь 2007

В файле проекта можно использовать подстановочные символы в качестве вводимых значений для создания построения, чтобы включить все файлы в один каталог или в набор вложенных каталогов. Однако может получиться так, что один файл в каталоге или один каталог в наборе вложенных каталогов не нужно включать в качестве вводимых значений для создания построения. Этот файл или каталог можно в явном виде исключить из списка вводимых значений. Кроме того, в проекте может быть файл, который требуется включить при определенных условиях. Можно в явном виде определить условия, при которых файл будет включен в построение.

Исключение файла или каталога из списка вводимых значений для создания построения

Вводимыми значениями для создания построения являются наборы элементов. Элементы, которые требуется включить в построение, объявляются либо каждый по отдельности, либо в виде группы, используя атрибут Include. Например:

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

Если для включения всех файлов одного каталога или набора вложенных каталогов в качестве вводимых значений для создания построения были использованы подстановочные символы, то возможна ситуация, когда есть один или несколько файлов в каталоге или один каталог в наборе вложенных каталогов, которые не нужно включать. Чтобы исключить элемент из набора элементов, используйте атрибут Exclude.

Чтобы включить все файлы с расширениями .cs или .vb, за исключением Form2, сделайте следующее:

  • Используйте один из атрибутов Include или Exclude:

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

    - или -

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

Чтобы включить все файлы с расширениями .cs или .vb, за исключением Form2 и Form3, сделайте следующее:

  • Используйте один из атрибутов Include или Exclude:

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

    - или -

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

Чтобы включить все JPG-файлы в подкаталоги каталога Images, за исключением тех, которые находятся в каталоге Version2,

  • Используйте следующие атрибуты Include или Exclude:

    <JPGFile 
        Include="Images\**\*.jpg" 
        Exclude = "Images\**\Version2\*.jpg"/>
    
    ms171455.alert_note(ru-ru,VS.90).gifПримечание.

    Необходимо указать путь для обоих атрибутов. Если используется абсолютный путь для указания местоположения файлов в атрибуте Include, необходимо также использовать абсолютный путь в атрибуте Exclude; если используется относительный путь в атрибуте Include, необходимо также использовать относительный путь в атрибуте Exclude.

Использование условий для исключения файла или каталога из списка вводимых значений для создания построения

Если имеются элементы, которые необходимо включить, например, в построение для отладки, но не для выпуска готового продукта, можно воспользоваться атрибутом Condition, чтобы задать условия, при которых будет происходить включение данного элемента.

Чтобы включить файл с именем Formula.vb только в выпуски готового продукта,

  • используйте атрибут Condition, который аналогичен следующему:

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

Пример

В следующем примере кода показано построение проекта, куда входят все файлы с расширением .cs, которые имеются в каталоге, кроме файла 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>

См. также

Задачи

Практическое руководство. Использование подстановочных знаков для построения всех файлов в каталоге

Основные понятия

Элементы MSBuild

MSBuild