В наших файлах проекта мы используем StyleCop и запускаем его во время процесса сборки. Мы изменили файлы нашего проекта, добавив в них цели StyleCop:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="..\..\Tools\Microsoft\StyleCop\v4.3\Microsoft.StyleCop.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
Вопрос в том, почему это работает? Кто вызывает цель StyleCop, определенную в файле Microsoft.StyleCop.targets?
Насколько я могу судить, единственной целью, запускаемой при запуске сборки, является цель "Сборка". Я не могу найти никаких ссылок на цель «StyleCop» за пределами файла Microsoft.StyleCop.targets. Итак, еще раз, почему это называется?
Причина, по которой я хочу знать, состоит в том, что было бы здорово, если бы мы могли сделать что-то подобное для наших собственных пользовательских задач. Поэтому вместо того, чтобы редактировать все наши 78 файлов csproj, мы могли бы просто импортировать нашу собственную общую цель, например:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="Common.targets" />
А затем вместо этого просто импортируйте StyleCop в этот файл вместе со всеми другими нашими задачами, которые необходимо выполнить для каждого проекта.
Пожалуйста, помогите мне понять.