Итак, по мере того как заголовок читает, у меня есть VS2010-решение с ~ 50 проектами в нем прямо сейчас. Если я внес изменения в проект "верхнего уровня", который ничего не ссылается, VS все еще перестраивает все 50 проектов. Я запускаю Visual Studio 2010 Ultimate без каких-либо надстроек. Я использую ILMerge для объединения всех проектов в один файл.
Я проверил это, проверив отметки времени DLL нижнего уровня и убедившись, что они действительно восстановлены, хотя их код не был затронут.
Я прочитал все ответы и комментарии для:
Visual Studio 2008 продолжает перестраивать
Visual studio продолжает строить все
В моем решении произошел сбой Strong VS2010
Причины для проектов С# для перестройки в Visual Studio
Но большинство из них просто предлагают предложения по разгрузке проектов, чтобы ускорить время сборки, но ничего конкретного относительно исправления. Я пытаюсь понять, почему VS считает, что эти зависимые проекты нужно перестраивать, когда они этого не делают, и исправить это.
Я включил "Инструменты" > "Параметры" > "Проекты и решения" > "Сборка и запуск" > Создавать только проекты запуска и зависимости от запуска ", но без эффекта.
Кроме того, если я просто перестрою проект "среднего уровня", который имеет только 8 (в) прямых зависимостей, то он все еще строит все 8 проектов, хотя ILMerge не вызывается и ни один из зависимых проектов не был изменен.
Спасибо всем за понимание, которое вы можете предоставить.
Добавлен
Чтобы проверить некоторые предложения, я создал новый проект WinForms с нуля. Затем я создал два новых проекта внутри этого решения. Я скопировал весь код и ресурсы (не файл проекта) из моих двух проектов "самого низкого уровня" в два новых проекта (я сделал это, отбросив файлы и папки из Проводника в проект в Visual Studio).
Самый низкий проект, позвонив ему B, не ссылался ни на какой другой проект. Следующий проект, A, ссылается только на B. Поэтому, как только я добавлю необходимые ссылки на .NET и внешние сборки для проектов, тогда будет построено решение.
Затем у меня была моя новая ссылка на проект WinForm A и была выполнена полная сборка. Таким образом, цепочка ref:
WinForm → A → B
Затем я модифицировал WinForm и сделал стандартную сборку (F6). Как и раньше, Visual Studio перестроила все три проекта.
После некоторого систематического изложения исходных файлов в проекте B я обнаружил, что если бы я удалил мои Resources.Designer.cs
и Resources.resx
(и закомментировал код, в котором использовался объект .Properties.Resources
эти ресурсы), то модификация WinForm больше не будет перестраивать все решение и будет только перестроить WinForm.
Добавление Resources.resx
и Resources.Designer.cs
назад к проекту B (но оставив ссылочный код закомментированным, чтобы ничто не использовало ресурсы) переведет полное поведение сборки.
Чтобы узнать, были ли повреждены мои файлы ресурсов, я удалил их еще раз, а затем создал новый (через Project Properties → Resources) и повторно добавил тот же ресурс, что и раньше, который был единственным файлом Excel. С помощью этой установки все еще будет выполнено полное восстановление.
Затем я удалил единственный ресурс, но оставил файл ресурсов в проекте B. Даже если ресурсы не добавлены, но файл ресурсов все еще находится в проекте, произойдет полная (ненужная) перестройка.
Похоже, что просто наличие файла ресурсов, добавленного в проект (.NET 3.5), приведет к тому, что Visual Studio 2010 всегда будет перестраивать этот проект. Является ли это ошибкой или предполагаемым/ожидаемым поведением?
Спасибо всем!