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


Выбор файлов для сборки

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

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

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

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

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

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

    <CSFile Include="form1.cs"/>

    or

    <VBFile Include="form1.vb"/>

    Примечание.

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

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

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

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

    or

    <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\*.*"

    or

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

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

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

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

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

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

    or

    <VBC Sources="@(VBFile)">...</VBC>

Примечание.

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

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

Пример 1

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

<Project DefaultTargets="Compile"
    xmlns="http://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>

Пример 2

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

<Project DefaultTargets="Compile"
    xmlns="http://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>