У меня есть проект Visual Studio 2008, который я "обновил" до Visual Studio 2010. С момента обновления у меня возникло много проблем с проектом (проект, который был и остается trooper в 2008 году, я мог бы добавить).
Первая проблема заключается в том, что создание основного исполняемого файла блокирует исполняемый файл, что приводит к сбою последующих перестроек. Это описано в связанном с этим вопросе: Visual Studio блокирует выходной файл в сборке, где я взял обходной путь:
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if exist "$(TargetPath)" if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
Кроме того, обходной путь работает ровно один раз. Заблокированный файл затем блокируется также с помощью файла devenv.exe и должен быть перемещен. Я работал над этим, добавив:.1.,.2.locked и т.д. Единственный раз, когда блокировки удаляются, поэтому файлы могут быть удалены при выключении devenv.exe(требуется несколько секунд после пользовательского интерфейса исчезает, то файлы можно удалить).
Тот факт, что отладчик не должен использоваться, чтобы вызвать эту проблему, указывает на довольно серьезную проблему с системой сборки 2010 года.
Некоторые теории, я думаю, могу сэкономить:
- Антивирус или другие фоновые задачи: если бы это было проблемой, казалось бы, что 2008 год потерпит неудачу. Однако, будучи самым полным, я удалил avast! системы полностью без везения.
UPDATE: этот проект имеет те же симптомы на машине без антивируса и без утилиты резервного копирования. На машинах в офисе работает XP SP3 32bit, мой локальный компьютер - Windows 7 64 бит. Это, по-видимому, не зависит от ОС.
- Отладчик блокирует файл: все, что требуется для воспроизведения, это повторение процесса сборки без отладки. ProcessExplorer показывает, что devenv.exe является владельцем блокировок, а не vshost и убивает vshost.exe, в любом случае не удаляет блокировки.
У меня есть вторичная проблема, которая начинает возникать после блокировки файлов: дизайнеры форм перестают загружаться с ошибкой "не удается найти сборку". Я подозреваю, что это связано с более ранней проблемой блокировки, поскольку разработчики запускаются прямо перед сборкой, но внесение любых изменений и перестроек приведет к тому, что все дизайнеры будут рушаться с этой ошибкой (даже те, которые у меня открыты и как текущее представление).
Жалко видеть форму, близкую к экрану ошибок, только потому, что вы изменили "манекен = 1" на "манекен = 2", где "dummy" ничего не делает, кроме как перекомпилировать в полностью несвязанной сборке.
Обновление: я попробовал еще несколько средств: Включить .NET source stepping не проверено, так что это не проблема. Удаление .SUO(параметры пользователя решения) просто работает до тех пор, пока перезагрузка обычно удаляет проблему (две сборки: первая, потому что нет заблокированного файла, а второй, потому что есть один, но его можно переименовать с помощью script).
Error 28 Unable to copy file "obj\Debug\PolicyTracker3.exe" to "bin\Debug\PolicyTracker3.exe".
The process cannot access the file 'bin\Debug\PolicyTracker3.exe' because it is being used by another process.