У меня есть только имена/местоположения других моих проектов, но я не хочу, чтобы разработчик сам добавлял зависимости проекта. Итак, для моего события предварительной сборки необходимо добавить «ссылки» (= что-то, что заставляет текущий проект зависеть от другого) с помощью какой-то магии msbuild. Возможно ли это?Как сделать проект зависимым от других проектов через msbuild?
Желаемая псевдокод:
<Task Name="MyOwnPrebuild">
<AddProjectDependencies ItemGroup="@MyProjectPaths" />
</Task>
Где я заполнил бы @MyProjectPaths массив, iteratating над моими окнами папки рекурсивно в какой-либо другой задачи перед вызовом этой.
Это невозможно. Стандартный курица-яйцо, к моменту, когда MSBuild решит начать выполнение пред-сборки, он уже выяснил зависимости. Попытка изменить их снова не работает. Не скрывайте зависимости, клиентский программист не имеет шанса выяснить, что не так, когда он взрывается. –
"к моменту, когда MSBuild решит начать выполнение события предварительной сборки, он уже выяснил зависимости« хорошо, по крайней мере, от просмотра CoreBuild в Common.CurrentVersion.targets он не должен быть правдой, что вы говорите, ResolveReferences; сразу после PreBuildEvent. – Blub
Порядок или цели в файле .targets не имеют отношения к делу. Вы можете легко рассуждать об этом сами, MSBuild делает * не * фактически что-то строить, если это не нужно. Который, конечно, требует, чтобы он знал, изменились ли зависимости, прежде чем он начнет что-либо делать, включая запуск события предварительной сборки. –