MSBuild в командной строке Visual Studio - PullRequest
1 голос
/ 26 февраля 2009

Я пытаюсь вызвать msbuild в .sln с событием сборки после

что-то вроде:

xcopy "$(TargetDir)$(TargetName)*" "C:\TEST\" /Y. 

Могу ли я сделать это в одну строку ??? В основном я хочу иметь что-то вроде:

msbuild Solution.sln xcopy "$(TargetDir)$(TargetName)" "C:\TEST\" 

Как я могу это сделать?

Ответы [ 5 ]

3 голосов
/ 26 февраля 2009

ИМХО, вам лучше отредактировать файл проекта напрямую и добавить его в цель AfterBuild. Вот пример, где мы копируем файлы DLL, PDB и XML сборки в сборке выпуска:

<Target Name="AfterBuild">
  <CallTarget Targets="CopyFrameworkToTools" 
              Condition="'$(Configuration)' == 'Release'"/>
</Target>
<Target Name="CopyFrameworkToTools">
  <CreateItem Include="$(OutputPath)$(AssemblyName).*">
    <Output ItemName="ReleaseFiles" TaskParameter="Include" />
  </CreateItem>
  <Copy SourceFiles="@(ReleaseFiles)" DestinationFolder="..\Tools\" />
</Target>

Вы можете сократить это до одной строки, используя задачу копирования, но я хочу показать, что интеграция в MSBuild дает вам больше гибкости и контроля.

1 голос
/ 26 февраля 2009

Вы не можете сделать это таким образом. Нет способа указать Задачи для выполнения из командной строки. Единственное, что вы можете сделать, это указать цели.

Вы можете либо:

  • запишите небольшой файл проекта MSBuild для задач, которые вам нужны. Недостатки: вы не можете ссылаться на результаты других проектов в вашем решении, поэтому вам нужно явно указать любые файлы
  • добавить событие посткомпоновки в файл проекта (через Visual Studio). Недостатки: Вы должны изменить свой проект, что не всегда возможно. (Нет, вы не можете внедрить это событие из командной строки). Кроме того, это событие будет выполняться только как часть обычной сборки.
  • добавить отдельную цель в ваш файл проекта. Те же недостатки, что и после пост-сборки. Разница с событием post post build заключается в том, что вы можете явно указать эту цель для msbuild, и она будет выполнять только свои задачи. Недостатки: аналогично событию после сборки.
0 голосов
/ 26 февраля 2009

Нет. добавление события после сборки будет частью строящегося файла проекта. Я не знаю, как добавить копию в конец командной строки.

Вы можете добавить событие пост-сборки в создаваемый проект, который будет делать копию.

0 голосов
/ 26 февраля 2009

Ваше событие после сборки является частью сборки namedconfiguration - поэтому оно будет выполнено как часть сборки проекта / конфигурации.

По крайней мере, мой опыт запуска MSBuild из командной строки.

Может быть, я неправильно понимаю ваш вопрос.

Возможно, если вы объясните, что вы пытаетесь сделать, мы можем придумать способ решить эту проблему - вместо того, чтобы пытаться ответить на вашу конкретную реализацию ...

0 голосов
/ 26 февраля 2009

Вы можете добавить событие посткомпоновки в проект, который будет копировать.

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