Не могу скомпилировать, потому что Visual Studio использует мою DLL - PullRequest
11 голосов
/ 04 августа 2011

У меня довольно большое решение .NET 2.0 (151 проект) в Visual Studio 2008. Часто, когда я делаю сборку (даже для одного проекта) в VS, я получаю сообщение об ошибке, в котором говорится, что не может скопироватьмоя библиотека DLL в выходной каталог, потому что он используется.У меня нет никаких других процессов, работающих в фоновом режиме или существующих сеансов отладки, которые использовали бы эту сборку.Если я открываю Process Explorer и выполняю поиск по имени этой сборки, Visual Studio (devenv.exe) является единственным результатом.Глядя на результаты, Visual Studio почему-то загружает мою сборку в виде DLL.Закрытие решения и его повторное открытие не решает проблему.Мне нужно полностью выйти из VS, чтобы обойти эту проблему, которая довольно разрушительна.Кто-нибудь знает, что происходит?Я работаю в Windows 7, я не думаю, что видел эту проблему в Windows XP.

Я работаю в Visual Studio 2008 версии 9.0.30729.1 SP.Я также использую ReSharper 6, если это имеет значение.

Ответы [ 7 ]

3 голосов
/ 04 августа 2011

Кто-нибудь знает, что происходит?Я работаю в Windows 7, я не думаю, что видел эту проблему в Windows XP.

Я постоянно сталкиваюсь с этой проблемой в Windows XP, и она даже не локализована в Visual Studio 2008Что всегда работает для меня, так это то, что я просто очищаю все решения, это избавляет от любого файла, который может находиться в памяти моей системы, из-за Visual Studio.

Visual Studio сохраняет все ваши ссылки в памяти, поэтому, когда одиниз этих ссылок обновляется, Visual Studio должна освободить его из памяти.Если это действительно происходит чаще, чем «один раз в некоторое время», то вы можете попытаться сократить количество решений в своем проекте.

1 голос
/ 15 октября 2017

Убить процесс VBCSCompiler.exe и пересобрать.

1 голос
/ 23 ноября 2014

Попробуйте отключить процесс хостинга:

Откройте исполняемый проект в Visual Studio.Проекты, которые не производят исполняемые файлы (например, библиотеки классов или проекты служб), не имеют этой опции.

  1. В меню Проект выберите Свойства.

  2. Перейдите на вкладку «Отладка».

  3. Снимите флажок Включить процесс размещения Visual Studio.

1 голос
/ 18 февраля 2013

Используйте следующую команду и поместите ее в «Pre Build Events» Visual Studio:

if exist "$(TargetPath).locked" del "$(TargetPath).locked"

Надеюсь, это поможет вам.

0 голосов
/ 16 августа 2011

Я понятия не имею, почему это работает, но у меня была та же проблема, и когда я изменил Starting Project на проект, я хотел, чтобы все работало снова.

Когда я снова изменяю проект автозагрузки на правильный, я больше не могу построить другой проект из-за используемого файла, поэтому это выглядит как ошибка в Visual Studio IDE.

0 голосов
/ 04 августа 2011

Я бы попробовал опцию «Чистое решение» перед сборкой.Это может очистить любые посторонние временные файлы, которые могут зависать в результате сбоя программы.

0 голосов
/ 04 августа 2011

Я бы предположил, что dll используется процессом (ProjectName) .vshost.exe.Вы можете попробовать убить этот процесс и посмотреть, работает ли он.Возможно, это не лучшая вещь, но это может быть проще, чем перезапустить VS.

...