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 не обнаружил правдоподобного решения. Хотя он и выявил тот факт, что другие люди также сталкивались с подобными проблемами.
Ответы
Ответ 1
Кажется, что мы столкнулись с той же проблемой, что и человек, задавший этот вопрос. В Microsoft Connect также есть отчет об ошибке.
Чтобы все было в порядке: наша промежуточная папка была такой же, как наша папка% temp% на некоторых конфигурациях. Мы решили проблему, изменив промежуточную папку всех наших проектов Visual С++.
Ответ 2
Убедитесь, что свойство project для "General\Target Name" и "Librarian\Output File" соответствует, и что они соответствуют всем конфигурациям.
Также стоит проверить выше на странице "Библиотекарь\Командная строка".