Подтвердить что ты не робот

Visual Studio/MSBUILD не обновляет файлы .lib при обновлении источников

У меня есть решение Visual Studio с проектом библиотеки, позвоните ему libFoo, а исполняемый проект - позвоните ему Bar, который зависит от libFoo.

Когда я меняю, например, libFoo/bar.cpp и attemp на сборку libFoo, тогда Visual Studio компилирует мой файл bar.cpp, но не регенерирует библиотеку libFoo.lib, заявив, что она уже обновлена.

Я проверил системные часы. Я также подтвердил, что время модификации файла bar.obj фактически обновлено и что библиотека старше, чем объект obj. Но он еще не воссоздает библиотеку.

Фактическое решение фактически состоит из около 100 проектов, некоторые из которых являются библиотеками, а некоторые из них являются исполняемыми. Проблема возникает на компьютерах из 3 членов моей команды. Остальные не затронуты. Мы не знаем, почему это происходит, и как это исправить... или погода может случиться с другими членами команды.

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

Спасибо, Алекс.

Edit

Решение было создано на Visual Studio 2010 и разработано на VS2010 в течение последних лет, пока мы не начали использовать VS2012. Проблема возникает для пользователей, у которых установлены VS2010 и VS2012. Теперь решение представляет собой решение VS2012, а в проектах используется инструментарий VS2010.

Когда мы начали использовать VS2012, наша команда перенесла решение, но мы оставили "платформенный инструментарий" для всех проектов на С++, как VS2010, чтобы обеспечить совместимость нашего кода с другими командами, все еще использующими VS2010.

Google не обнаружил правдоподобного решения. Хотя он и выявил тот факт, что другие люди также сталкивались с подобными проблемами.

4b9b3361

Ответ 1

Кажется, что мы столкнулись с той же проблемой, что и человек, задавший этот вопрос. В Microsoft Connect также есть отчет об ошибке.

Чтобы все было в порядке: наша промежуточная папка была такой же, как наша папка% temp% на некоторых конфигурациях. Мы решили проблему, изменив промежуточную папку всех наших проектов Visual С++.

Ответ 2

Убедитесь, что свойство project для "General\Target Name" и "Librarian\Output File" соответствует, и что они соответствуют всем конфигурациям. Также стоит проверить выше на странице "Библиотекарь\Командная строка".