Ответ 1
Выяснилось: служба "Теневая копия тома" была отключена по какой-то причине. Вернул его обратно, и все в порядке.
Я использую версию графического интерфейса NUnit, и она начала расстраиваться, когда у меня загружен тестовый проект, пытающийся проверить что-то. Если я вношу изменения в Visual Studio, а затем попытаюсь перестроить решение, он выдает сообщение об ошибке "Невозможно скопировать файл obj\Debug\foo.dll в bin\Debug\foo.dll. Процесс не может получить доступ к файлу bin\Debug\foo.dll, потому что он используется другим процессом.
Это DLL, которую я загрузил в GUI, конечно. Это было нормально, и просто обновляйте ссылку на проект после сборки, но теперь, похоже, это блокирует его. Как я могу вернуться к этому поведению?
Я попытался включить/отключить настройку теневой копии, кстати, с теми же результатами в любом случае.
VS2008 SP1 и NUnit 2.4.8, если это имеет значение.
Выяснилось: служба "Теневая копия тома" была отключена по какой-то причине. Вернул его обратно, и все в порядке.
Я просто хотел добавить, что перемещение файла проекта Nunit в место решения решило мою проблему. Мне не нужно было изменять настройки теневого копирования в nunit или включить службу теневого копирования.
См. "Переполнение стека" nunit lock dll
У меня была та же проблема, что и в вопросе. Я решил это на своей машине следующим образом:
Если у вас есть Копировать в каталог вывода как Копировать, вы получите ошибку компиляции, указанную в вопросе. Если вы сделаете упомянутое выше изменение, оно должно исчезнуть, и ваша dll все равно будет скопирована.
У меня была та же проблема:
Unable to copy file obj\Debug\foo.dll to bin\Debug\foo.dll.
The process cannot access the file bin\Debug\foo.dll because it is being used by another process.
Причиной в моем случае было то, что я использовал одно и то же пространство имен в двух сборках:
Изменение одного из имен пространства имен устранило проблему. Я сделал несколько изменений в обеих сборках и повторно скомпилирован без ошибки
Обратите внимание, что обе сборки содержат тесты, поскольку я играю с NUnit.
У меня тоже была эта проблема, но я изо всех сил пытаюсь воспроизвести ее сегодня. Как представляется, форумы предполагают, что это связано с тем, что ваш код не возвращает ресурсы, которые он использовал. Это звонит, так как я бы тестировал Xml-ридера, когда у меня была эта проблема.
Здесь ссылка, которую я нашел на asp.net
У меня была эта проблема, и после многого чтения и экспериментирования я понял, что виновником на самом деле не было ничего в NUnit или моем коде. Это была другая библиотека, которую я использовал, FakeItEasy, фреймворк, который не смог правильно освободить все ресурсы.
Если вы используете FakeItEasy с NUnit и сталкиваетесь с этой проблемой, подумайте о переходе на другую структуру макета. Если вы не используете FakeItEasy или удаляете его из своего проекта, не исправить это, сделайте инвентаризацию всех сторонних библиотек, которые вы используете из тестового кода, и подумайте, может ли кто-нибудь из них что-то делать.
В качестве альтернативы, попросите создателя NUnit явно освободить любые ресурсы, хранящиеся в любой из собранных тестовых сборок, или если вы гораздо активнее, чем я, воспользуйтесь тем, что он является проектом с открытым исходным кодом и решение, которое делает это.