Ошибка дизайнера Visual Studio 2010: невозможно скопировать из obj \ debug в bin \ debug - PullRequest
4 голосов
/ 18 августа 2010

Интересно, есть ли у кого-нибудь решение этой ошибки 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 ]

3 голосов
/ 04 ноября 2010

Я не уверен, будет ли это работать для вас или нет, но этот похожий вопрос если у вас есть эта строка в AssemblyInfo.cs:

[assembly: AssemblyVersion("2.0.*")]

изменив его на:

[assembly: AssemblyVersion("2.0.0.0")]

решит эту проблему.

Надстройка Visual Studio " VSCommands " утверждает, что исправляет эту проблему. Я еще не тестировал его, но он также утверждает, что имеет встроенный в IDE трекер репутации stackoverflow, который меня заинтриговал:)

Ваш обходной путь "Закрыть конструктор перед отладкой", кажется, работает для меня (пока), за что я очень благодарен. Это начало доходить до стадии, когда большая часть моего дня была потрачена на следующий рабочий процесс ...

  1. F5

  2. громкий ругательный

  3. ALT F4

  4. WIN 3

  5. ждет с нетерпением ...

  6. F5
1 голос
/ 14 декабря 2010

У меня были одни и те же проблемы в течение долгого времени, а потом они внезапно исчезли.Я понял, что источником проблем была инициализация кода в конструкторах служб WCF и элементов управления WPF.После очистки конструкторов от любых зависимостей от других сборок все было в порядке.

Поэтому я предлагаю следующее: Очистите ваши конструкторы.

В WPF возможно, что вставка:

if (DesignerProperties.GetIsInDesignMode(this)) return;

или аналогичная будет иметь тот же эффект.

...