Ошибка дизайнера Visual Studio 2010: невозможно скопировать из obj\debug в bin\debug
Хотите знать, если у кого-нибудь есть решение этой ошибки 2010 года. У меня есть проект, который прекрасно скомпонован в Visual Studio 2008, который не будет собираться в 2010 году, потому что Visual Studio удерживает DLL после запуска приложения ТОЛЬКО, если открыто окно конструктора. Я создал действительно легкий проект, который показывает эту проблему. Если вы создаете приложение, то создайте библиотеку DLL. Поместите одну форму в dll, откройте форму в режиме конструктора и запустите приложение. Он будет работать нормально, затем закроет приложение, перейдет к представлению кода формы в представлении конструктора и изменит код (я просто переименовал одну переменную), а затем попробую перекомпилировать, вы получите следующее:
Ошибка 1 Не удается скопировать файл "obj\Debug\customlib.dll" в "build\debug\customlib.dll". Процесс не может получить доступ к файлу "build\debug\Customlib.dll", так как он используется другим процессом.
Если вы запускаете Process Explorer и ищете dll, единственный процесс, содержащий dll, это devenv.exe!!!
Я провел массу поисков по этой проблеме и обнаружил похожие проблемы со старыми версиями Dev Studio, где люди могли просто добавить предварительный шаг, чтобы переместить заблокированную dll на другое имя (.locked) и собрать. Хорошо, это работает в первый раз, но в следующий раз, когда вы запустите, затем отредактируете, вы заблокированы как от текущей dll, так и от той, которую вы переместили в.locked, так что если я не хочу добавлять код для случайного генерирования имени для заблокированной dll, это не будет работать для меня (я не хочу, чтобы размер моего каталога отладки увеличивался с файлами, никогда не удаляемыми.)
Я нашел только один обходной путь, и если вы находитесь в той же лодке, это то, что я должен сделать, чтобы отредактировать и запустить. Я удостоверяюсь, что КАЖДОЕ окно представления дизайна закрыто ПРЕЖДЕ ЧЕМ я запускаю свой проект в отладчике Если вы закроете все открытые дизайнерские окна Windows devenv.exe не будет держать DLL.
У кого-нибудь есть лучшее решение этой проблемы?
2 ответа
Я не уверен, будет ли это работать для вас или нет, но этот похожий вопрос, если у вас есть эта строка в AssemblyInfo.cs:
[assembly: AssemblyVersion("2.0.*")]
изменив его на:
[assembly: AssemblyVersion("2.0.0.0")]
решит эту проблему.
Надстройка Visual Studio " VSCommands" утверждает, что имеет исправление для этой проблемы. Я еще не тестировал его, но он также утверждает, что имеет встроенный в IDE трекер репутации stackru, который меня заинтриговал
Ваш обходной путь "Закрыть конструктор перед отладкой", похоже, работает для меня (пока), за что я очень благодарен. Это начало доходить до стадии, когда большая часть моего дня была потрачена на следующий рабочий процесс...
F5
громкий ругательный
ALT F4
WIN 3
ждет с нетерпением...
- F5
У меня были одни и те же проблемы в течение длительного времени, а потом они внезапно исчезли. Я понял, что источником проблем была инициализация кода в конструкторах служб WCF и элементов управления WPF. После очистки конструкторов от любых зависимостей от других сборок все было хорошо.
Поэтому я предлагаю следующее: очистите ваши конструкторы.
В WPF возможно, что вставка:
if (DesignerProperties.GetIsInDesignMode(this)) return;
или аналог будет иметь тот же эффект.