Зависимости DLL Visual Studio вызывают ненужную повторную ссылку - PullRequest
2 голосов
/ 23 декабря 2009

У меня есть решение (Visual C ++) для Visual Studio с несколькими проектами, некоторые из которых являются DLL. Зависимости проектов друг от друга подаются в «Зависимости проектов». Всякий раз, когда DLL изменяется и перестраивается, независимо от того, влияет ли это изменение на другие проекты или нет (т. Е. Изменяется только реализация, а не объявления), все дерево зависимостей от этой DLL и выше повторно связывается (однако, не перекомпилируется) всякий раз, когда зависимый проект собирается или тестируется как кандидат на сборку, хотя это совершенно не нужно. Если бы я запускал зависимый проект из-за пределов VS до полного процесса перекомпоновки, он бы работал нормально, как есть.

Поскольку проект большой, весь этот ненужный процесс занимает значительное время. Есть ли способ исправить это поведение?

Ответы [ 2 ]

3 голосов
/ 23 декабря 2009

Если я понимаю, что вы говорите, то вы перестроили DLL и жалуетесь, что она перепроверяет все, что использует эту DLL?

Это звучит правильно для меня, если вы изменили DLL, вам придется заново связать все, что использует ее, в зависимости от нее. Я знаю, что вы можете изменить реализацию внутри DLL, и если вы будете осторожны, чтобы интерфейс оставался идентичным, вам не придется связывать его, но VC ++, как и большинство инструментов сборки, работает только на время изменения и время LIB. файл для него, безусловно, изменился, поэтому единственное, что нужно сделать, это перезапустить.

Если вы не хотите, чтобы это происходило, то вам, вероятно, нужен проект A для ссылки на фиксированную копию библиотеки для DLL, а не копию проекта

0 голосов
/ 23 декабря 2009

Ну, это типичное поведение VS, когда вы «перестраиваете решение» ... чтобы преодолеть это «Построить» измененный компонент, а не «Перестроить» его, и у вас все должно быть в порядке. Или вы можете выгрузить проекты / библиотеки DLL, которые, как вы знаете, не будут изменены, и при перестройке VS будет создавать только загруженные проекты и игнорировать выгруженные.

Я не уверен, что вы имеете в виду, когда говорите «Пересвязать VS, а не перекомпилировать», когда вы перестраиваете решение, все проекты компилируются и связываются в соответствии с деревом зависимостей ...

...