Разделение функций в проекты часто является оптимизацией архитектуры YAGNI. Как часто Вы снова использовали те отдельные проекты, действительно? Если это не частое возникновение, Вы усложняете свою разработку, сборку, развертывание и обслуживание для теоретического повторного использования.
я очень предпочитаю распадаться на папки (использующий соответствующие пространства имен) и осуществляющий рефакторинг для разделения проектов, когда у Вас есть реальный вариант использования повторного использования.
Получается, что проблема решается сама, если я добавляю / INCREMENTAL
в командную строку компоновщика. И это несмотря на то, что поведение по умолчанию в соответствии с документами - включить добавочное связывание.
Странно.
На самом деле съемка в темноте, но ...
Вы перемещаете XXXXX.exe из того места, где он создан, в другое место? Весь смысл инкрементной ссылки состоит в том, чтобы изменить существующий exe. Если его нет, это будет сложно ...
Другая возможная причина состоит в том, что файл был изменен после сборки (вероятно, другим инструментом) ...
Все причины перечислены в справке элемент для / INCREMENTAL :
Кроме того, LINK выполняет полное ссылка, если любое из следующих возникают ситуации:
Файл инкрементного состояния (.ilk) отсутствует. (ССЫЛКА создает новый файл .ilk в рамках подготовки к последующим инкрементное связывание.)
Нет разрешения на запись для .ilk файл. (ССЫЛКА игнорирует файл .ilk и ссылки не инкрементально.)
Выходной файл .exe или .dll отсутствует.
Метка времени файлов .ilk, .exe или .dll изменен.
Параметр LINK изменен. Большинство ССЫЛКИ параметры при изменении между сборками, вызывает полную ссылку.
Добавлен объектный файл (.obj) или опущено.
Объект, который был скомпилирован с Параметр / Yu / Z7 изменен.
(ТАКЖЕ в темноте) Одна из возможных причин заключается в том, что вы используете заголовок всего проекта, ссылающийся на макрос __ DATE __
. Но в этом случае вы бы также увидели полную перекомпиляцию (а?)
Старый вопрос, но на всякий случай для кого-то это все еще проблема (и это ..).
Инкрементная ссылка несовместима с созданием файла манифеста (Proj opts> Linker> Manifest File> Generate Manifest: Yes). Действительно, создание манифеста изменяет exe / dll, поэтому компоновщик должен выполнять полную привязку.
Для получения дополнительных сведений существует несколько обходных путей: http://chadaustin.me/2009/05/incremental-linking-and-embedded-manifests/
Временный (и самый простой / самое быстрое) решение - отключить создание манифеста во время разработки и снова включить его на этапе выпуска. Хотя это отключает графический интерфейс в стиле XP / Vista для приложения (элементы управления выглядят как в «классическом режиме»).