我不时遇到以下问题:
我开始调试加载项,并且断点将被忽略。IDE和组件之间的通信似乎几乎无法正常工作。
我的问题是,上一次发生这种情况后,我解决了它,现在我不记得自己做了什么修复。
断点当前不会被命中。没有为文档加载任何符号。
在某种程度上,这里已经描述了我遇到的问题,但是对于实际的断点故障没有解决方案。
请注意,这通常有效。
删除bin和obj似乎无效。
这次我只是从备份中还原了整个项目并重新开始,但是我想知道如何解决这个问题,如果我再次遇到这个问题。
我不时遇到以下问题:
我开始调试加载项,并且断点将被忽略。IDE和组件之间的通信似乎几乎无法正常工作。
我的问题是,上一次发生这种情况后,我解决了它,现在我不记得自己做了什么修复。
断点当前不会被命中。没有为文档加载任何符号。
在某种程度上,这里已经描述了我遇到的问题,但是对于实际的断点故障没有解决方案。
请注意,这通常有效。
删除bin和obj似乎无效。
这次我只是从备份中还原了整个项目并重新开始,但是我想知道如何解决这个问题,如果我再次遇到这个问题。
Answers:
这是ESRI员工提供的非官方且未经测试的解决方案。(他们确实强调这不是官方解决方案)
尝试从bin目录中的arcmap.exe.config中删除。
这是\ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config xml文件。
Debug.WriteLine()
的消息不被发送到输出窗口在VS 2010
2年和2版本之后,这仍然是一个问题。刚刚完成了对我的10.2版所有插件的更新/改进,再次遇到了这个问题。在这篇文章中实现了所有建议,但没有任何效果,但是我发现了另外一个可能的问题。不幸的是,我不确定这是否是罪魁祸首,因为我也同时实现了其他大多数可能的修复程序。
新发现:我意识到自版本10起,我就一直在同一台机器上开发Addins,并且在重新安装后并不总是清除旧版ArcGIS数据。我发现在C:\ Program Files(x86)\ ArcGIS中的ArcGIS数据的早期版本中,有一个较旧的“罪魁祸首”插件。由于ArcGIS将加载旧版加载项,因此可能存在某种冲突。我删除了所有旧版arcgis应用程序数据(Desktop10.0,Desktop10.1),仅留下Desktop10.2,并且断点栩栩如生。同样,如果这是解决方案,我不是100%,但可能是列表中要检查的另一项。
我已经在另一个站点上看到这个特定的问题被称为“最终的生产力杀手”,我对此表示同意。
总结一下,这是我当前针对“死”断点问题的待办事项清单:
确保,我实际上正在运行插件。调试器无法启动应用程序-断点将显示为“死”,直到我运行插件(按钮,菜单选项等)为止
从项目目录中删除OBJ和BIN推子。
删除assebmly chache的内容:C:\ Users \ User \ AppData \ Local \ ESRI \ Desktop10.2 \ AssemblyCache
删除所有旧的装配体数据。(如果当前版本为10.2,请删除Desktop10.0,Desktop10.1组装数据)没有证据表明这有帮助或是问题的一部分,但没有理由需要此数据,因此我删除它是为了以防万一(C :\ Users \ User \ AppData \ Local \ ESRI)
根据ESRI的支持建议;更改ArcCatalog和ArcMap配置XML(当我尝试时本身无法正常工作,但是有人建议将其作为解决方案,包括ESRI支持)。在C:\ Program Files中找到ArcCatalog.exe.config和ArcMap.exe.config( 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。
重新启动计算机。(过去曾有过这样的工作)也发现这是Stack Overflow上推荐的解决方案之一。
在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。
重建项目并调试。加载项激活后,您应该会看到缓存内容得到刷新。
如果需要,请重新隐藏受保护的OS文件。
对我来说,问题在于C:\ Users \\ Local Settings \ ESRI \ DesktopX.X \ AssemblyCache \文件夹中存在我的DLL的旧实例,并且我也看不到\ AssemblyCache,因为我没有意识到这是一个隐藏的OS文件。还有一个正在运行的ArcMap僵尸实例,当我最初尝试删除DLL时,它已被锁定。我的怀疑是,首先导致问题的原因是,在重新编译代码并启动另一个代码之前,我没有完全关闭ArcMap的调试会话。缓存中的旧DLL无法覆盖,因为旧的ArcMap实例仍将其锁定,并且一旦与新代码不同步,缓存的版本就不再更新。(我可以通过文件日期看到正在更新.config,.pdb和.xml,而不是.dll。)
我正在处理相同的问题,但在其他主题中使用了自己的加载项,因此提出了以下内容:
首先,启动调试,然后在菜单中选择以下窗口调试>> Windows >>模块,您可以在其中查看调试启动时加载了哪些模块。如果您在此处看不到yourAddIn.dll,那么至少您知道它没有被Studio加载。如果您看到那里并且无法在此处放置断点,则Studio加载了一个旧的。要检查这一点,请在项目属性中更改程序集的名称,重新生成解决方案,开始调试,然后您将看到旧的dll加载在那里。我不知道工作室从哪里加载这个旧的dll。
转到解决方案资源管理器并检查比较“ yourAddIn.Addin”和“ yourAddIn-用于Testing.AddIn”文件,它们可能有所不同。Studio在其插件管理器中仅使用第二个文件!第一次更改还要更改其中的标签以引用正确的dll,您也可以检查该标签。对我来说,在“ yourAddIn-For Testing.AddIn”文件中将其设置回0,所以我将其更改回1。您想从加载项列表中删除此加载项!此时Studio将LoadBehavior设置为0。)
这两个更改之后,它又开始工作了!
使用Visual Studio,我为Arcmap创建了一个新的加载项,并向其中添加了一个按钮和一个工具栏。生成的配置文件如下所示:
<ESRI.Configuration xmlns="http://schemas.esri.com/Desktop/AddIns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Name>ArcMapAddin4</Name>
<AddInID>{b6b350bb-084d-42b8-a44a-6dbb6a9f5906}</AddInID>
<Description>Type in a description for this Add-in.</Description>
<Version>1.0</Version>
<Image>Images\ArcMapAddin4.png</Image>
<Author>Kirk</Author>
<Company>Microsoft</Company>
<Date>8/15/2011</Date>
<Targets>
<Target name="Desktop" version="10.0" />
</Targets>
<AddIn language="CLR" library="ArcMapAddin4.dll" namespace="ArcMapAddin4">
<ArcMap>
<Toolbars>
<Toolbar id="MyToolbar4" caption="MyToolbar4" showInitially="true">
<Items>
<Button refID="Microsoft_ArcMapAddin4_Button1"/>
</Items>
</Toolbar>
</Toolbars>
<Commands>
<Button id="Microsoft_ArcMapAddin4_Button1" class="Button1" message="Add-in command generated by Visual Studio project wizard." caption="My Button" tip="Add-in command tooltip." category="Add-In Controls" image="Images\Button1.png" />
</Commands>
</ArcMap>
</AddIn>
</ESRI.Configuration>
我在Button的构造函数中创建了一些代码,并在其中添加了一个断点。我以调试模式启动,看到程序集尚未加载:
我将按钮更改为包括onDemand = false:
当我再次启动arcmap时,它达到了断点。请注意,如果工具栏在启动时处于关闭状态,则需要使其可见以使按钮构造函数被调用-因此在某些方面它仍处于需求状态。
将ESRI ArcGIS 10项目从一台计算机迁移到另一台计算机后,遇到错误,该计算机无法为ArcMap.exe加载调试.pdb文件。我在这个帖子上尝试了所有建议,但没有任何运气。
然后,我执行以下操作:
我删除了包含它们的每个项目中所有Esri。*库的引用,然后将它们重新添加到新计算机上的项目中。
这终于对我有用。如果有人在这个模糊的问题上迷路了,并且尝试了此页面上列出的所有其他内容,请尝试执行此操作-快速,简单且无害。我不完全确定为什么必须这样做,我猜测这与在每台计算机上查找库有关。
这是针对使用BaseCommands / Toolbars的项目,而不是新的外接程序。在Windows 7 Pro上将ArcGIS 10.0和.NET 3.5与Visual Studio 2010一起使用。
对于那些针对.Net 4.0 Framework的用户,以下对我有用。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319"/>
<!--supportedRuntime version="v2.0.50727"/-->
</startup>
"CLR4.0"
我想到两个可能的原因:
插件未正确注册,因此DLL不会加载到正在调试的ArcMap进程中。
您的项目以.NET 4为目标。请尝试以.NET 3.5为目标。
如果在同一个Visual Studio解决方案中使用多个项目进行编码,则可能会遇到Visual Studio(VS)“禁用”断点且无法单步执行代码的情况。这是最近发生的事情,我无法进入从主项目中调用的“依赖” DLL程序集项目。
VS警告表明我的程序集(DLL)已过时且与我的代码不完全匹配。有VS选项可以关闭代码匹配的要求,但是从直观上讲,这似乎是一个坏主意,并且得到了Internet帖子的支持。我阅读了许多网站,并且那里有一些过时的建议。
最后,我从从属计算机上搜索了输出DLL,并在计算机上的不同位置找到了几个旧副本(可能是来自较早的实验和项目配置)。所以我删除了所有这些,并从头开始重建我的解决方案。这解决了我的问题。我想我当前的项目无意中绑定到了一个旧副本,并且没有使用放置在调试文件夹中的最新版本。
在多个ArcObjects项目中,我汇总了调试可能不适用于加载项,扩展名和命令(预加载项)的原因列表。没有特别的顺序:
许多步骤要求重新启动ArcMap。如果所有其他方法均失败,则重新启动计算机很容易,但我只做过一次。
AnthonyWJones在/programming/7192361/silverlight-project-wont-enter-debug-mode中描述了对我有用的方法 :“打开关联的Web项目的属性。选择Web选项卡。滚动到在底部和“调试器”部分中,确保已选中“ Silverlight”。”
我曾经一两次发生这种情况。如果我没记错的话,我在进行较小的代码更改时就能够使断点正常工作,这意味着应用程序已重建。构建或重建项目时会发生什么?
我不敢相信会有更多的人没有这个问题。现在,几乎每次我在改进和调试加载项时都会遇到此问题。
上述解决方案均无效。要解决此问题,我需要删除整个项目并从备份中还原它。这使我相信特定项目中的某些东西已经损坏,因为它通常是在调试期间ArcMap崩溃时开始发生的。