Не удается скомпилировать, потому что Visual Studio использует мою DLL
У меня довольно большое .NET 2.0 решение (151 проект) в Visual Studio 2008. Часто, когда я делаю сборку (даже для одного проекта) в VS, я получаю сообщение об ошибке, говоря, что он не может скопировать один из мои сборки DLL в выходной каталог, потому что он используется. У меня нет других процессов, выполняющихся в фоновом режиме или существующих сеансов отладки, которые будут использовать эту сборку. Если я открою Process Explorer и выполните поиск этого имени сборки, то Visual Studio (devenv.exe) появится как единственный результат. Глядя на результаты Visual Studio имеет мою сборку, загруженную как DLL по какой-то причине. Закрытие решения и его повторное открытие не решают проблему. Я должен полностью выйти из VS, чтобы обойти эту проблему, которая довольно разрушительна. Кто-нибудь знает, что происходит? Я запускаю Window 7, я не думаю, что видел эту проблему в Windows XP.
Я запускаю Visual Studio 2008 Версии 9.0.30729.1 SP. Я также использую ReSharper 6, если это имеет значение.
Ответы
Ответ 1
Кто-нибудь знает, что происходит? Я запускаю Window 7, я не думаю, что я видел эту проблему в Windows XP.
Я постоянно сталкиваюсь с этой проблемой в Windows XP и даже не локализуюсь в Visual Studio 2008. Что всегда работает для меня, я просто очищаю все решения, это избавляет от любого файла, который может быть в моей системной памяти, из-за Visual Studio.
Visual Studio сохраняет любые ваши ссылки в памяти, поэтому, когда одна из этих ссылок обновляется, Visual Studio должна выпустить ее из памяти. Если это действительно произойдет более чем "раз в какое-то время", вы можете попытаться уменьшить количество решений в своем проекте.
Ответ 2
Используйте следующую команду и поместите ее в "Pre Build Events" визуальной студии:
if exist "$(TargetPath).locked" del "$(TargetPath).locked"
Надеюсь, это поможет вам.
Ответ 3
Попробуйте отключить процесс хостинга:
Откройте исполняемый проект в Visual Studio. Проекты, которые не создают исполняемые файлы (например, библиотека классов или проекты обслуживания), не имеют этой опции.
-
В меню "Проект" выберите "Свойства".
-
Перейдите на вкладку Отладка.
-
Снимите флажок Включить процесс хостинга Visual Studio.
Ответ 4
Я бы предположил, что dll используется процессом (ProjectName).vshost.exe. Вы можете попробовать убить этот процесс и посмотреть, работает ли это. Вероятно, это не самая лучшая вещь, но это может быть проще, чем перезапуск VS.
Ответ 5
Я попробую вариант "Чистое решение" перед сборкой. Это может очистить любые посторонние временные файлы, которые могут возникать из-за сбоя программы.
Ответ 6
Я понятия не имею, почему это работает, но у меня была такая же проблема, и когда я сменил начальный проект на проект, мне захотелось все снова сработать.
Когда я снова меняю проект Startup вправо, я больше не могу построить другой проект из-за используемого файла, поэтому выглядит как ошибка в среде Visual Studio IDE.
Ответ 7
Убейте процесс VBCSCompiler.exe и перестройте.