2016-04-25 5 views
0

У меня есть решение Visual Studio 2013, в котором много проектов C#. Существует требование, что проект B должен быть построен после завершения сборки проекта (A).Почему задача MSBuild не создает зависимостей проекта?

Проект A не зависит от проекта B. Проект B имеет зависимость от проектов A, C и других. Все зависимости определяются как ссылки на проекты.

я добавил следующую цель спроецировать:

<Target Name="MyAfterBuildStep" AfterTargets="AfterBuild"> 
    <MSBuild Projects="$(Bproject)" Properties="Configuration=$(ConfigurationName);Platform=$(PlatformName);SolutionDir=$(SolutionDir);BuildProjectReferences=true"/> 
</Target> 

Это начинается, но это не создает зависимостей $ (Bproject).

Может кто-нибудь помочь мне понять, почему зависимости не построены и что мне делать, чтобы их построить?

+1

Существуют ли зависимости, определенные как ссылки на проекты или ссылки на файлы? это Bproject решение или один проект? – KMoraz

+0

Как ссылки на проекты. Bproject и другие проекты, упомянутые здесь, являются проектами в одном и том же решении. – lenikur

+0

Требование несколько громоздкое. если проект B имеет зависимость от проекта A, почему проекту A необходимо построить проект B, а не наоборот, по которому это поведение по умолчанию? вы заставляете круговые зависимости, а затем спрашиваете, как их избежать. может быть, лучше объяснить, что вы цель, поэтому могут быть предложены другие решения. – KMoraz

ответ

0

Если оба проекта на том же растворе, построить Bproject в качестве мишени с $(SolutionPath) и т.д .:

<MSBuild Projects="$(SolutionPath)" Targets="Tests\Bproject" Properties="Configuration=$(ConfigurationName);Platform=$(PlatformName);SolutionDir=$(SolutionDir);BuildProjectReferences=true"/> 

Целевое имя должно отражать название проекта, включая папки решения.

+0

Большое спасибо! Я не могу проверить это сейчас, но это выглядит красиво. Я отметил этот ответ как полезный, но у меня нет приемлемой репутации. – lenikur

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