У меня есть большое решение с более чем 100 проектами (С++, Managed С++, С#), и многие из них зависят друг от друга.
У меня есть сервер TeamCity, и я хочу создать там это решение.
Когда я создаю решение в VisualStudio, все идет хорошо, но с TeamCity у меня ошибка CS0006. Я знаю, почему это так - TeamCity использует MSBuild 4 для создания решений, но в MSBuild 4 есть известная ошибка - она игнорирует порядок построения и создает проекты из решений, чтобы они этого захотели. Из-за этого поведения, если у вас есть:
Project A
Project B which has reference to A
MSBuild может построить этот проект в следующем порядке:
1. B
2. A
Самое простое решение - установить BuildProjectReferences = true (по умолчанию), и все связанные проекты будут построены автоматически. Но я не могу использовать этот подход, потому что не все ссылки проекта в этом решении, и я не могу строить проекты из другого решения.
Вот еще одно исправление для этой проблемы - используйте ConfigurationManager и отключите все проекты, которые не следует создавать, но они работают только в VisualStudio. MSBuild игнорирует это и создает все проекты, на которые ссылаются.
Проблема заключается в том, чтобы восстановить порядок сборки, который я могу увидеть в VisualStudio в окне ProjectBuildOrder, что неверно, если я использую MSBuild непосредственно из консоли.