Обычно вы запускаете скрипт MSBuild из командной строки, используя следующий синтаксис:
MSBuild <scriptfilename> /t:targetname
Вы можете получить больше информации здесь: http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx
Что вы пытаетесь выполнить, анализируя все файлы .cs из файла проекта? Имейте в виду, что в VS2005 и более поздних версиях файлы проекта являются сценариями MSBuild сами по себе, поэтому вы можете просто вызвать MSBuild в командной строке и присвоить ему имя файла проекта в качестве и соответствующего цель.
При этом, если вы создаете отдельный файл скрипта, я обычно храню его в корневой папке проекта.
Если вы хотите, чтобы список файлов представлял собой одно строковое свойство, разделенное точкой с запятой:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<Import Project="Project.csproj" Condition="Exists(Project.csproj')"/>
<Target Name="Test">
<Message Text="@(Compile)"/>
</Target>
</Project>
Если вы хотите отображать каждый файл по отдельности:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<Import Project="Project.csproj" Condition="Exists(Project.csproj')"/>
<Target Name="Test">
<Message Text="%(Compile.FullPath)"/>
</Target>
</Project>
Обходя каждый из этих примеров, первая строка (<Project ...>
) идентифицирует тот факт, что это файл проекта MSBuild, определяет DefaultTargets (те цели, которые будут выполняться, если не задана цель (/ t: targetname) командная строка) XML-схема (xmlns), используемая для проверки файла, и используемая версия MSBuild (ToolsVersion).
Вторая строка (<Import ...>
) говорит MSBuild включить содержимое сценария MSBuild с именем «Project.csproj», если он существует.
Наконец, мы определяем цель с именем «Тест», которая содержит одну задачу. Это задание «Сообщение», которое печатает сообщение (что содержится в «Тексте») на экране.
В первом примере, <Message Text="@(Compile)"/>
, мы ссылаемся на ItemGroup с именем «Compile» как список с разделителями точкой с запятой. Во втором примере мы ссылаемся на ту же ItemGroup, но зацикливаемся на каждом элементе в этой ItemGroup и печатаем содержимое метаданных «FullPath». (Compile ItemGroup определена в .csproj, который мы импортировали в строке 2.)