Практическое руководство. Выбор файлов для построения
При создании проекта, содержащего несколько файлов, можно указывать каждый файл отдельно в файле проекта, а можно использовать знаки подстановки, чтобы включить все файлы в одном каталоге или наборе вложенных каталогов.
Указание входных данных
Входные данные для построения представлены в элементах. Дополнительные сведения об элементах см. в разделе Элементы MSBuild.
Чтобы включить файлы в построение, их необходимо включить в список элементов в файле проекта MSBuild. Чтобы добавить в список элементов несколько файлов, можно включать файлы по отдельности или использовать знаки подстановки, чтобы включить несколько файлов одновременно.
Объявление отдельных элементов
Используйте атрибуты Include следующим образом:
<CSFile Include="form1.cs"/>
либо
<VBFile Include="form1.vb"/>
Примечание
Если элементы в коллекции элементов не находится в том же каталоге, что и файл проекта, необходимо указать полный или относительный путь к элементу.Например, Include="..\..\form2.cs".
Объявление нескольких элементов
Используйте атрибуты Include следующим образом:
<CSFile Include="form1.cs;form2.cs"/>
либо
<VBFile Include="form1.vb;form2.vb"/>
Указание входных данных с помощью знаков подстановки
Знаки подстановки можно использовать для рекурсивного включения всех файлов или только определенных файлов из подкаталогов в качестве входных данных для построения. Дополнительные сведения о подстановочных знаках см. в разделе Элементы MSBuild.
В приведенных далее примерах за основу взят проект, в котором содержатся графические файлы в следующих каталогах и подкаталогах (файл проекта находится в каталоге "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>
Примечание
Чтобы указать входные данные для построения, необходимо использовать знаки подстановки в элементах; нельзя указать входные данные с помощью атрибута 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>
См. также
Задачи
Практическое руководство. Исключение файлов из построения