2014-10-30 3 views
0

У меня есть только имена/местоположения других моих проектов, но я не хочу, чтобы разработчик сам добавлял зависимости проекта. Итак, для моего события предварительной сборки необходимо добавить «ссылки» (= что-то, что заставляет текущий проект зависеть от другого) с помощью какой-то магии msbuild. Возможно ли это?Как сделать проект зависимым от других проектов через msbuild?

Желаемая псевдокод:

<Task Name="MyOwnPrebuild"> 
    <AddProjectDependencies ItemGroup="@MyProjectPaths" /> 
</Task> 

Где я заполнил бы @MyProjectPaths массив, iteratating над моими окнами папки рекурсивно в какой-либо другой задачи перед вызовом этой.

+0

Это невозможно. Стандартный курица-яйцо, к моменту, когда MSBuild решит начать выполнение пред-сборки, он уже выяснил зависимости. Попытка изменить их снова не работает. Не скрывайте зависимости, клиентский программист не имеет шанса выяснить, что не так, когда он взрывается. –

+0

"к моменту, когда MSBuild решит начать выполнение события предварительной сборки, он уже выяснил зависимости« хорошо, по крайней мере, от просмотра CoreBuild в Common.CurrentVersion.targets он не должен быть правдой, что вы говорите, ResolveReferences; сразу после PreBuildEvent. – Blub

+0

Порядок или цели в файле .targets не имеют отношения к делу. Вы можете легко рассуждать об этом сами, MSBuild делает * не * фактически что-то строить, если это не нужно. Который, конечно, требует, чтобы он знал, изменились ли зависимости, прежде чем он начнет что-либо делать, включая запуск события предварительной сборки. –

ответ

0

В моем конкретном случае есть (к счастью!) А тупо простой, но красивый ответ:

<ItemGroup> 
    <ProjectReference Include="..\**\*.csproj"> 
    <Private>false</Private> 
    </ProjectReference> 
</ItemGroup> 

Сюда входит все мои проекты из всех вложенных папок (?)! Именно то, что я хочу в этом конкретном случае. Если я хочу ограничить конкретный тип проекта, я мог бы легко использовать более конкретное регулярное выражение.

+0

Предупреждение для других: как-то Visual Studio, похоже, пытается быть «умным» и расширять это для меня. Кажется, что не происходит в каждой сборке, поэтому я должен смотреть это. – Blub

Смежные вопросы