MSBuild проект из файла решения

Я пытаюсь запустить сборку.net, используя MSBuild из RTC (BuildForge). Я продолжаю получать следующее исключение:

ошибка MSB1009: файл проекта не существует. Переключатель: F:\Program Files (x86)\IBM\Build Forge\Agent\Captiva_Build_dotNET\BUILD_117\xxxxxx\ Исходный код \ Компоненты \ xxxxxx \ xxxxxxx.sln

Команда build выглядит следующим образом

MSBuild.exe "xxxx.sln" /t:xxx_yyyy_zzzzzz_asdfasdf_base

куда /t: Является одним из проектов в решении. Я не понимаю, что я делаю неправильно. у меня есть _ в заявлении. Это должно быть легко построить? Есть идеи?

1 ответ

Решение

msbuild.exe /t:target используется для выполнения определенной цели в решении или проекте.

msbuild.exe MySolution.sln /t:Clean

Чтобы построить конкретный проект, вы должны указать файл проекта, а не решение.

msbuild.exe MyProject.csproj

Редактировать:

Эврика, ты абсолютно прав, я использовал MsBuildEmitSolution Переменная env для вывода сценария metaproj, но никогда не видела этого раньше.

Итак, прежде чем вы сможете прийти к этому:

MsBuild.exe MySolution.sln /t:ProjectName:TargetName

В командной строке установите MsBuildEmitSolution:

set MsBuildEmitSolution=1

Затем создайте свой метапроект.

MsBuild.exe MySolution.sln /pp

Откройте выходной файл MySolution.sln.metaproj в блокноте и прокрутите вниз и найдите соответствующий <Target /> узел, который вы хотите построить, и запишите строку атрибута Name.

  <Target Name="Client_Test:Build">
    <MSBuild Condition="'%(ProjectReference.Identity)' == '...Client_Test.csproj'" Projects="@(ProjectReference)" Targets="Publish" BuildInParallel="True" ToolsVersion="$(ProjectToolsVersion)" Properties="..." />
  </Target>

И ВОЙЛА!

MsBuild.exe MySolution.sln /t:"Client_Test:Build"
Другие вопросы по тегам