Выбор файлов для сборки
При создании проекта, содержащего несколько файлов, можно указать каждый файл отдельно в файле проекта либо можно использовать подстановочные знаки, чтобы включить все файлы в одном каталоге или наборе вложенных каталогов.
Указание входных данных
Элементы представляют собой входные данные для сборки. Дополнительные сведения об элементах см. в разделе Элементы.
Чтобы включить файлы в сборку, их необходимо включить в список элементов в файле проекта 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>
Связанный контент
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по