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


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

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

При создании проекта, содержащего несколько файлов, можно указывать каждый файл отдельно в файле проекта, а можно использовать знаки подстановки, чтобы включить все файлы в одном каталоге или наборе вложенных каталогов.

Указание входных данных

Входные данные для построения представлены в элементах. Дополнительные сведения об элементах см. в разделе Элементы MSBuild.

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

Объявление отдельных элементов

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

    <CSFile Include="form1.cs"/>
    

    – либо –

    <VBFile Include="form1.vb"/>
    
    ms171454.alert_note(ru-ru,VS.90).gifПримечание.

    Если элементы, входящие в набор, не находятся в одном каталоге с файлом проекта, необходимо указать полный или относительный путь к элементу. Например, Include="..\..\form2.cs".

Объявление нескольких элементов

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

    <CSFile Include="form1.cs;form2.cs"/>
    

    – либо –

    <VBFile Include="form1.vb;form2.vb"/>
    

Указание входных данных с помощью знаков подстановки

Знаки подстановки можно использовать для рекурсивного включения всех файлов или только определенных файлов из подкаталогов в качестве входных данных для построения. В приведенных далее примерах за основу взят проект, в котором содержатся графические файлы в следующих каталогах и подкаталогах (файл проекта находится в каталоге "Project"):

Project\Images\BestJpgs

Project\Images\ImgJpgs

Project\Images\ImgJpgs\Img1

Включение всех JPG-файлов в каталоге "Images" и подкаталогах

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

    Include="Images\\**\*.jpg"
    

Включение всех JPG-файлов, начинающихся со слога "img"

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

    Include="Images\**\img*.jpg"
    

Включение всех файлов в каталогах с именами, которые оканчиваются слогом "jpgs"

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

    Include="Images\**\*jpgs\*.*"
    

    – либо –

    Include="Images\**\*jpgs\*"
    

Передача элементов в задачу

В файле проекта используйте запись @() в задачах, чтобы указать весь набор элементов в качестве входных данных для построения. Эту запись можно использовать при перечислении файлов по отдельности или при использовании знаков подстановки.

Использование всех файлов Visual C# или Visual Basic в качестве входных данных

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

    <CSC Sources="@(CSFile)">...</CSC>
    

    – либо –

    <VBC Sources="@(VBFile)">...</VBC>
    
ms171454.alert_note(ru-ru,VS.90).gifПримечание.

Чтобы указать входные данные для построения, необходимо использовать знаки подстановки в элементах; нельзя указать входные данные с помощью атрибута Sources в задаче MSBuild, такой как Csc или Vbc. Следующий пример недопустим в файле проекта:

<CSC Sources="*.cs">...</CSC>

Пример

В приведенном ниже примере кода показан проект, в котором все входные файлы включены по отдельности.

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

    <ItemGroup>
        <CSFile Include="Form1.cs"/>
        <CSFile Include="AssemblyInfo.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>

В приведенном ниже примере кода используется знак подстановки для включения всех CS-файлов.

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

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

    <ItemGroup>
        <CSFile Include="*.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