Не удается скомпилировать, потому что 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 и перестройте.