Что вызывает нестандартные сборки командной строки Visual Studio 2005?

В Visual Studio 2005 у меня есть решение с явными зависимостями, указанными в диалоговом окне Project Dependencies.

Когда я создаю, например, devenv / rebuild Release, проекты создаются в другом порядке, чем при загрузке IDE. Это порядок, запрещенный моими указанными зависимостями.

В некоторых случаях вылетает devenv :(

В журнале отображается число перед каждой строкой, показывающей порядок, который, как я считаю, является порядком, вызванным зависимостями:

11> MyExeProject - 1 ошибка (и), 0 предупреждений (ов)

Однако сборки кажутся запущенными в этом порядке, прерванными и продолжающимися в другом порядке, что не работает. Таким образом, 8 может завершить сборку раньше 11. Если 11 ссылок в 8, есть проблема.

Аналогичное переупорядочение происходит в среде IDE, но порядок сборки по-прежнему сохраняет целостность.

Нужно построить из командной строки, есть идеи, почему это так или в чем причина?


person theschmitzer    schedule 10.12.2008    source источник


Ответы (3)


Хорошо, я думаю, вот настоящий ответ.

Многопроцессорные сборки включены. Порядок зависимостей по-прежнему применяется в среде IDE, но не через командную строку, по крайней мере, в VS 2005.

Отключить его можно через Инструменты / Параметры / Сборка и запуск. Установите максимум на 1.

person theschmitzer    schedule 15.12.2008
comment
Была аналогичная проблема, когда я переместил сборку в многопроцессорную систему и нашел то же решение. - person Philibert Perusse; 17.12.2008

Убедитесь, что вы правильно установили зависимости в решении. Это может напрямую повлиять на порядок сборки.

person Brody    schedule 11.12.2008
comment
Проблема с переупорядочением заключается в том, что несколько сборок выполняются одновременно из-за нескольких ядер / потоков / процессоров. Microsoft пытается быть более эффективным, но им это не удалось. - person unixman83; 01.03.2011

Если при сборке в среде IDE у вас не произошел сбой devenv, вам повезло.

Следующее обходное решение неприятно, но оно сработало для меня, вздох. Перезагрузитесь и настройте BIOS, чтобы разрешить работу только одного ядра ЦП.

person Windows programmer    schedule 11.12.2008
comment
Интересно, что вы говорите, что я вижу в диспетчере задач несколько копий cl.exe, работающих время от времени. - person theschmitzer; 11.12.2008
comment
Конечно, мы хотим, чтобы было запущено несколько копий cl.exe, мы хотим, чтобы несколько ядер использовались по назначению, и мы хотим, чтобы devenv.exe нашел способ избежать сбоев при этом. Вздох. - person Windows programmer; 12.12.2008
comment
Затем откройте диспетчер задач и установите привязку к процессу для решения devenv. - person Daemin; 17.12.2008