Этот меня ставил в тупик больше года и кажется действительно странным и непонятным. Когда я создаю свое решение, оно жалуется на отсутствие библиотеки DLL, на которую указывает ссылка. Когда я его перестраиваю, проблема уходит. Всякий раз, когда я выполняю чистку, это возвращается, т.е. мне нужно дважды попытаться выполнить сборку, прежде чем она будет успешной.
Это расплывчато, но если есть основания, я могу дать лучшее объяснение структуры решения. Поскольку обходной путь состоит в том, чтобы создать дважды, я никогда не удосужился уделить ему больше внимания, но это очень раздражает.
Кроме того, сборка не выполняется, потому что кажется, что DLL просто отсутствует, поэтому код, который ссылается на нее после сбоя, из-за отсутствия типов в DLL. В следующий раз, когда я запускаю сборку, все работает нормально.
Обновление:
- Упомянутая DLL является внешней (ValidationFramework от CodePlex), расположенной в дереве исходного кода.
- Ни один из моих проектов не копирует DLL, только некоторые ссылаются на нее.
- Это происходит как в сборках отладки, так и в сборках выпуска.
Просто счел уместным также добавить, что проект A ссылается на ValidationFramework.dll, как и проект B, но проект B ссылается на проект A. Теперь, когда возникает ошибка сборки, всегда, когда компилятор переходит к проекту B, то есть проект A всегда строит успешно при первой и второй попытках сборки.
Кроме того, когда проект B терпит неудачу, я могу снова и снова нажимать «Построить», но это не повлечет за собой никаких действий, для этого действительно требуется «Перестроить», поэтому все, что «исправляет» возникшую проблему, происходит до создания проекта B (поскольку сама проблема может также).