Время от времени я сталкиваюсь со следующей проблемой:
Я начинаю отлаживать надстройку и точки останова игнорируются. Почти кажется, что связь между IDE и компонентом не работает.
Моя проблема в том, что в прошлый раз, когда это произошло, я решил это, и теперь я не могу вспомнить, что я сделал, чтобы это исправить.
Точка останова в настоящее время не будет достигнута. Для документа не было загружено никаких символов.
Частично проблема, которая у меня возникла, уже описана здесь, но нет решения для фактической неисправности точки останова.
Обратите внимание, что это нормально работает.
Удаление корзины и объекта, кажется, не работает.
На этот раз я просто восстановил весь проект из резервной копии и начал заново, но я хотел бы знать, как это исправить, если я столкнусь с этим снова.
источник
Ответы:
Вот неофициальное и до сих пор не проверенное решение от сотрудников ESRI. (Они подчеркнули, что это не официальное решение)
Попробуйте удалить из arcmap.exe.config в каталоге bin.
Это XML-файл \ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config.
источник
Debug.WriteLine()
сообщения не отправлялись в окно вывода в VS 2010.2 года и 2 версия спустя, и это все еще проблема. Только что закончил обновлять / улучшать все мои надстройки для 10.2 и снова столкнулся с этой проблемой. Реализованы ВСЕ предложения в этом посте, но ничего не получилось, но я обнаружил еще одну возможную проблему . К сожалению, я не уверен, был ли это виновником или нет, потому что я также реализовал большинство других возможных исправлений одновременно.
Новая находка: я понял, что разрабатываю надстройки начиная с версии 10 на той же машине и после переустановки не всегда очищал устаревшие данные ArcGIS. Я обнаружил, что у меня была более старая версия надстройки виновника в предыдущей версии данных ArcGIS в C: \ Program Files (x86) \ ArcGIS. Поскольку ArcGIS загрузит устаревшие надстройки, возможно, возник конфликт. Я удалил все устаревшие данные приложения arcgis (Desktop10.0, Desktop10.1), оставив только Desktop10.2, и точка останова ожила. Опять же, я не на 100%, если это решение, но это может быть другой пункт в списке, чтобы проверить.
Я видел, как эту конкретную проблему называют «убийцей конечной производительности» на другом сайте, и я не мог согласиться с этим.
Подводя итог, вот мой текущий список дел для «мертвой» проблемы точки останова:
Убедитесь, что я на самом деле работает надстройка. Недостаточно запустить приложение отладчиком - точка останова будет отображаться как «мертвая», пока я не запущу надстройку (кнопка, пункт меню и т. Д.)
Удалите фодеры OBJ и BIN из каталога проекта.
Удалите содержимое сборки: C: \ Users \ User \ AppData \ Local \ ESRI \ Desktop10.2 \ AssemblyCache
Удалите все устаревшие данные сборки. (Если текущая версия - 10.2, удалите данные сборки Desktop10.0, Desktop10.1) Нет никаких доказательств того, что это помогает или является частью проблемы, но нет причины, по которой эти данные должны существовать, поэтому я удаляю их на всякий случай (C : \ Users \ User \ AppData \ Local \ ESRI)
Согласно предложению поддержки ESRI; Измените XML-конфигурацию ArcCatalog и ArcMap (когда я пытался, она не работала сама по себе, но несколько человек рекомендовали это как решение, включая поддержку ESRI) Найдите ArcCatalog.exe.config и ArcMap.exe.config в C: \ Program Files ( x86) \ ArcGIS \ Desktop10.2 \ bin Откройте каждый xml в блокноте и удалите строку
<supportedRuntime version="v2.0.50727"/>
Это примерно пятая строкаУдалите все устаревшие данные приложения ArcGIS из установочного каталога. Это то, что работает для меня. (возможно) Перейдите по адресу: C: \ Program Files (x86) \ ArcGIS. Удалите все папки, кроме текущих, для Desktop10.x (т. е. Desktop10.0, Desktop10.1). В этом месте должна оставаться только текущая версия Desktop.
Удалите и повторно добавьте все ссылки на проекты, включая ссылки не-ESRI, выполните восстановление, повторите шаги 2 и 3, перекомпилируйте, запустите dbugger.
Перезагрузите компьютер. (Это раньше работало в прошлом). Также было установлено, что это одно из рекомендованных решений по переполнению стека.
В Config.esriaddinx - измените кнопку, чтобы включить onDemand = false: (совет Кирка - см. Выше). Лично для меня это не сработало.
Перестройте проект с нуля. (Это работало для меня в прошлом.)
источник
Единственный раз, когда я получил это, это когда я открыл еще один экземпляр ArcMap и забыл закрыть его перед сборкой / отладкой. Если вы не закроете все экземпляры, используя сборку, тогда будет использоваться старый. Или что-то типа того.
источник
Поскольку мой проект .NET Framework версии 4.0, я перешел на
supportedRuntime version="v4.0.30319"
ArcMap.exe.config и заметил, что это изменение было отложено. Я также вспомнил, что ArcMap также загружает ArcCatalog, поэтому я также изменил ArcCatalog.exe.config наsupportedRuntime version="v4.0.30319"
YES !!! Это снова работает. Я провел весь день, пытаясь это исправить, и я надеюсь, что это сработает и для вас.источник
Я некоторое время пробовал приведенные выше предложения и, наконец, нашел решение. Переходя к преследованию, я сначала дам решение, а затем объяснение:
Откройте диспетчер задач. Завершить процесс для любой копии ArcMap.exe.
Откройте проводник Windows. Перейдите к C: \ Users \\ Local Settings \ ESRI \ Desktop10 ..
Если вы не видите AssemblyCache, выберите «Упорядочить»> «Папка и параметры поиска»> «Просмотр»> снимите флажок «Скрыть защищенные файлы операционной системы (рекомендуется)»
В каталогах в AssemblyCache найдите тот, который содержит ваш .dll.
Удалить .dll.
Перестройте проект и отладьте. Как только ваше дополнение активируется, вы должны увидеть, что содержимое кэша обновляется.
При желании повторно скрыть защищенные файлы ОС.
Проблема для меня заключалась в том, что в папке C: \ Users \\ Local Settings \ ESRI \ DesktopX.X \ AssemblyCache \ был старый экземпляр моей DLL, и я также не мог видеть \ AssemblyCache, потому что я не понимал, это был скрытый файл ОС. Был также запущен экземпляр зомби ArcMap, и когда я попытался удалить DLL, она была заблокирована. Я подозреваю, что в первую очередь проблема была в том, что я не совсем закрыл сеанс отладки ArcMap, прежде чем перекомпилировать код и запустить другой. Старая DLL в кеше не может быть перезаписана, потому что старый экземпляр ArcMap все еще заблокировал ее, и как только она вышла из синхронизации с новым кодом, кэшированная версия больше не обновлялась. (По датам файлов я вижу, что .config, .pdb и .xml обновляются, но не .dll.)
источник
Я имел дело с той же проблемой, с моей собственной надстройкой в совершенно другой теме, и я исследовал следующее:
Сначала запустите debug и в меню выберите следующее окно Debug >> Windows >> Modules, где вы можете увидеть, какие модули были загружены при запуске отладки. Если вы не видите там yourAddIn.dll, то, по крайней мере, вы знаете, что он не был загружен студией. Если вы видите там и не можете установить точку останова, то Studio загрузила старую. Чтобы проверить это, измените имя сборки в свойствах проекта, перестройте решение, запустите отладку, и вы увидите старую DLL, загруженную туда. Я не знаю, откуда студия загружает эту старую DLL.
Перейдите в обозреватель решений и проверьте сравнение файлов «yourAddIn.Addin» и «yourAddIn - For Testing.AddIn», и они могут отличаться. Студия использует только 2-й файл в своем менеджере надстроек! При первом изменении также измените тег в нем, чтобы он ссылался на правильную DLL, и вы также можете проверить тег. Для меня значение было установлено обратно на 0 в файле «yourAddIn - For Testing.AddIn», поэтому я изменил его обратно на 1. (Если вы удалите каталог bin своей надстройки и запустите студию, она спросит вас и спросит что вы хотели бы удалить эту надстройку из списка надстроек! На этом этапе Studio устанавливает LoadBehavior равным 0.)
После этих двух изменений он снова начал работать!
источник
В Visual Studio я создал новую надстройку для Arcmap и добавил к ней кнопку и панель инструментов. В результате файл конфигурации выглядит следующим образом:
Я создал некоторый код в конструкторе для Button и установил в нем точку останова. Я начал в режиме отладки и вижу, что сборка еще не загружена:
Я изменил кнопку, чтобы включить onDemand = false:
Когда я снова запустил arcmap, он достиг точки останова. Обратите внимание, что если при запуске панель инструментов отключена, вам нужно сделать ее видимой, чтобы вызвать вызов конструктора кнопки - так что в некоторых случаях она все еще по требованию.
источник
Пришлось изменить мой плагин для arcCatalog, чтобы он соответствовал с помощью framework 4 с новой версией ArcCatalog 10.1.
Просто закомментировал версию = "v2.0.50727" и раскомментировал "v4.0.30319"
В C: \ Program Files (x86) \ ArcGIS \ Desktop10.1 \ bin конфигурационный файл ArcCatlog.exe xml
останавливается на точке останова сейчас
Кажется, такая же проблема с arcmap
источник
После того, как я перенес проект ESRI ArcGIS 10 с одного компьютера на другой, я столкнулся с ошибкой, что машина не может загрузить отладочные файлы .pdb для ArcMap.exe. Я попробовал каждый совет на этом посту без какой-либо удачи.
Затем я сделал следующее:
Я удалил ссылки для всех библиотек Esri. * В каждом проекте, который их содержал, и повторно добавил их в проект на новом компьютере.
Это то, что в итоге сработало для меня. Если кто-то споткнется здесь с этой неясной проблемой и попробует все остальное, перечисленное на этой странице, попробуйте это - это быстро, легко и довольно безопасно. Я не совсем уверен, почему это нужно было сделать, я предполагаю, что это связано с поиском библиотек для каждой машины.
Это было для проекта, который использовал BaseCommands / Toolbars, а не новые надстройки. Использование ArcGIS 10.0 и .NET 3.5 с Visual Studio 2010 в Windows 7 Pro.
источник
Для тех, кто ориентируется на .Net 4.0 Framework, у меня работает следующее.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0.30319"/> <!--supportedRuntime version="v2.0.50727"/--> </startup>
По какой-то причине ArcCatalog.exe.config кажется заблокированным для изменения. Я справился с этим, скопировав и изменив его в другом каталоге, а затем заменив.
"CLR4.0"
источник
На ум приходят две возможные причины:
Надстройка не зарегистрирована должным образом, поэтому DLL не загружается в отлаживаемый процесс ArcMap.
Ваш проект нацелен на .NET 4. Вместо этого попробуйте нацелиться на .NET 3.5.
источник
Если вы программируете с несколькими проектами в одном и том же решении Visual Studio, вы можете столкнуться с ситуациями, когда Visual Studio (VS) «отключает» ваши точки останова, и вы не можете выполнить пошаговое выполнение кода. Это недавно произошло со мной, когда я не смог войти в «зависимый» проект сборки DLL, который вызывался из моего основного проекта.
Предупреждения VS указывают на то, что моя сборка (DLL) устарела и точно не соответствует моему коду. Существуют опции VS, чтобы отключить требование соответствия кода, но интуитивно это казалось плохой идеей и было подкреплено сообщениями в Интернете. Я читаю много веб-сайтов, и там есть несколько грубых предложений.
В конце концов я выполнил поиск выходной DLL-библиотеки с моего зависимого компьютера и обнаружил несколько старых копий в разных местах на моем компьютере (предположительно из более ранних экспериментов и конфигураций проекта). Поэтому я удалил их все и перестроил свое решение с нуля. Это исправило мою проблему. Я предполагаю, что мой текущий проект каким-то образом случайно привязался к одной из старых копий и не использовал последнюю сборку, которая была помещена в мою папку отладки.
источник
Для меня сработало не удаление arcmap.config.exe, как описано в посте Jakub выше, а установка в этом файле тега «SupportRuntime» для правильной версии Framework, на которую вы ориентируетесь в Visual Studio, в моем случае:
источник
В ряде проектов ArcObjects я составил список причин, по которым отладка может не работать для надстроек, расширений и команд (предварительная надстройка). В произвольном порядке:
Для многих шагов требуется перезапуск ArcMap. Если все остальное терпит неудачу, перезапуск машины - легкий запасной вариант, но я только однажды сделал это имеет значение.
источник
То, что сработало для меня, было описано AnthonyWJones в /programming/7192361/silverlight-project-wont-enter-debug-mode : «Откройте свойства соответствующего веб-проекта. Выберите вкладку« Веб ». внизу и в разделе «Отладчики» убедитесь, что «Silverlight» установлен. »
источник
Я имел это случиться со мной один или два раза. Если я правильно помню, мне удалось заставить точку останова работать, когда я сделал небольшое изменение кода, что означало, что приложение было перестроено. Что происходит, когда вы строите или перестраиваете свой проект?
источник
Я не могу поверить, что больше людей не имеют этой проблемы. Теперь я сталкиваюсь с этим почти каждый раз, когда улучшаю и отлаживаю свои надстройки.
Ни одно из вышеупомянутых решений не работает. Чтобы это исправить, мне нужно удалить весь проект и восстановить его из резервной копии. Это наводит меня на мысль, что что-то в конкретном проекте стало поврежденным, поскольку обычно это происходит, когда ArcMap дает сбой во время отладки.
источник
Вы создаете свой проект с использованием Framework 4? У меня была такая же проблема, но когда я переключаюсь на Framework 3.5, он работает нормально.
источник
попробуйте очистить и перестроить, а затем запустить без отладки, когда приложение работает, подключите его в VS
источник
Я знаю, что это может показаться слишком очевидным, но я все равно упомяну, что вам нужна соответствующая версия Visual Studio. Например, эта проблема может возникнуть с экспресс-выпуском данного года, в то время как она может работать с окончательной версией. Если вы используете, скажем, 2010, попробуйте перейти на 2012 год. Затем попробуйте переключиться с экспресс-на конечную. Я бы сделал это, если вы еще не сталкивались с проблемами загрузки символов. ESRI предоставляет информацию о загрузке символов в кэш, как указано в ссылке выше (Справка ArcObjects 10 .NET SDK). Тем не менее, это не может быть необходимым. Убедитесь, что вы используете соответствующую .net Framework также до отладки, например .net 3.5 в более старых выпусках.
источник