Можно ли использовать MSBuild в качестве «файла проекта» в Visual Studio? - PullRequest
2 голосов
/ 13 июля 2010

MSBuild теперь является механизмом сборки для всех поддерживаемых языков в Visual Studio.Я хотел бы начать использовать преимущества этой системы, чтобы упростить тонну логики, которую я втиснул в скрипты до и после сборки.

Для этого мне нужно написать скрипт MSBuildвручную, потому что я хотел бы иметь более одной цели в одном файле.Т.е. я хотел бы иметь возможность просто набрать «msbuild myproject.msbuild», и вся работа будет собрана сама с нуля, как я могу, скажем, с make.необходимость поддерживать совершенно отдельные файлы «проекта» для Visual Studio, учитывая, что все это теперь построено поверх MSBuild.

Есть ли для меня способ сделать это?

Ответы [ 3 ]

1 голос
/ 13 июля 2010

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

<!-- Your normal projects -->
<Import Project="..\Library\Common.Targets" />
<Target Name="BeforeBuild">
    <CallTarget Targets="Common_BeforeBuild_DoFoo" />
</Target>
...

<!-- Library\Common.Targets -->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Common_BeforeBuild_DoFoo">
       ...
    </Target>
</Project>

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

1 голос
/ 13 июля 2010

Помимо учета общей логики в обычно импортируемых целях, как предлагали другие, вы можете создать «главный» проект, который строит другие, см., Например, примеры на

http://msdn.microsoft.com/en-us/library/z7f65y0d.aspx

которые показывают, как использовать задачу <MSBuild> для вызова MSBuild в других проектах (хотя мне неясно, разделяет ли каждый 'sub MSBuild' свой анализ зависимостей или нет).

0 голосов
/ 13 июля 2010

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

Конечно, вы не сможете редактировать такие цели с помощью дизайнера проектов Visual Studio.

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