Привет, Stackoverflow.
В последнее время, когда я программировал в Visual Studio 2010, у меня возникала проблема с VS, которая блокировала файл bin/Debug/(ProjectName).exe при попытке сборки и давала мне ошибку ниже, пытаясь постройте проект 10 раз:
Невозможно скопировать файл "obj\x86\Debug\TileEngine.exe" в "bin\x86\Debug\TileEngine.exe". Процесс не может получить доступ к файлу 'bin\x86\Debug\TileEngine.exe', потому что он используется другим процессом.
Проблема возникает, когда я редактирую источник, а затем пытаюсь отлаживать. Я проверил использование разных программ, и единственной программой, использующей этот файл, является Visual Studio.
Если я подождал около 10 минут, прежде чем пытаться построить, он работает нормально, но при попытке разного типа не стоит ждать 10 минут, прежде чем что-то попробовать.
Я пробовал разные решения как на этом сайте, так и везде, где я могу найти в Google.
Некоторые решения, которые я нашел, но не работали для меня
Решение 1 - Использование предварительной сборки script
В некоторых разных вопросах здесь, в Stackoverflow, я нашел одно решение: вы заходите в Project Properties > Build Events
, а затем в командной строке события Pre-build добавьте:
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if not exist "$(TargetPath).locked" move "$(TargetPath)" "$(TargetPath).locked"
Это позволило мне построить проект еще раз, чем я обычно мог, но при повторном редактировании кода, а затем при создании произошла ошибка.
Примечание.. Попытка создания версии вместо сборки отладки, похоже, разбивает предварительную сборку script и выходит из нее с кодом "1", что, похоже, делает VS неспособным построить должным образом. Удаление pre-build script заставляет его работать как "нормальный" снова, но с той же ошибкой.
Решение 2 - запуск Visual Studio в качестве администратора
Это еще одно решение, которое я нашел, но havent работал либо для меня, поэтому я предполагаю, что Visual Studio уже имеет все необходимые разрешения и работает, поскольку администратор на самом деле не имеет никакого значения.
Решение 3 - Изменение AssemblyVersion
В этом вопросе Ошибка сборки Visual Studio: невозможно скопировать exe файл из obj\debug в bin\debug, я нашел другое решение, которое включало изменение AssemblyVersion
, в файле Properties\AssemblyInfo.cs
, до "2.0.0.0"
.
Это, однако, не имело для меня никакого значения.
Решение 4 - Закрытие конструкторов UserControl до сборки
В соответствии с некоторыми различными ответами здесь и там в Интернете Visual Studio, по-видимому, использует встроенный исполняемый файл проекта для рендеринга конструктора UserControl
(?). В моем случае, вероятно, это не так, поскольку я использую XNA в основном и не использует конструктор UserControl
.
Решение 5 - Очистка ресурсов при закрытии приложения
Это может быть решение, которое я не смог реализовать должным образом. Я просто думаю, что если это решение, то почему я не должен был это делать раньше. Я предполагаю, что XNA выгружает все, что загружается через конвейер Content
, поэтому это решение не будет иметь никакого реального смысла.
Если есть кто-то, кто может рассказать о проблеме, это было бы действительно потрясающе, поскольку это мешает мне программировать что-нибудь действительно, потому что мне не нравится ждать 10 минут, потому что я сделал 2 секунды все время меняются.