我开始调试加载项,并且断点被忽略。 IDE和组件之间的通信似乎几乎无法正常工作。
我的问题是,上一次发生此问题时,我已解决了该问题,但现在我不记得该如何解决此问题了。
当前不会找到断点。没有为该文档加载任何符号。
部分地,这里已经描述了我遇到的问题,但是对于实际的断点故障没有解决方案。
请注意,这通常可以正常工作。
删除bin和obj似乎不起作用。
这次我只是恢复了整个工作项目从备份开始并重新开始,但是我想知道如何解决这个问题,如果我再次遇到这个问题。
#1 楼
这是ESRI员工提供的非官方且未经测试的解决方案。 (他们确实强调说这不是一个官方解决方案)尝试从bin目录中的arcmap.exe.config中删除。
这是\ ArcGIS \ Desktop10。 0 \ bin \ arcmap.exe.config xml文件。
评论
实际上,它在这里是“文档化”的resources.arcgis.com/en/help/arcobjects-net/conceptualhelp / ...我在编码ogr-workspace插件时遇到了这个问题,最终将其放在开发人员常见问题解答github.com/中RBURHUM / arcgis-ogr
–拉吉·亚瑟(Ragi Yaser Burhum)
2012年10月26日22:09
这为我解决了这个问题,还有另一个我的Debug.WriteLine()消息没有发送到VS 2010中的输出窗口的问题。
– GeoSharp
2014年4月4日在1:41
我又遇到了这个问题,这是这次的工作。我正在运行VS 2010 Express(C#),目标是.NET 4.0。我必须取消对v4.0支持的运行时版本的注释,并删除v2.0参考。
–雷达
15年4月27日在18:53
#2 楼
2年和2版本之后,这仍然是一个问题。刚完成更新/改进我的10.2版所有插件,再次遇到了这个问题。在这篇文章中实现了所有建议,但没有任何效果,但是我发现了另外1个可能的问题。不幸的是,我不确定这是否是罪魁祸首,因为我同时也实现了其他大多数可能的修复程序。新发现:我意识到自版本10以来,我一直在同一台计算机上开发Addins,并且在重新安装后并不总是清除旧版ArcGIS数据。我发现在C:\ Program Files(x86)\ ArcGIS中的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的支持建议;更改ArcCatalog和ArcMap配置XML(当我尝试时,它本身不能工作,但是有几个人将其推荐为解决方案,包括ESRI支持)在C中找到ArcCatalog.exe.config和ArcMap.exe.config
: \ 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版本保留在该位置。
重新启动计算机。 (过去曾有过类似的工作)也发现这是Stack Overflow上推荐的解决方案之一。
在Config.esriaddinx中-将按钮更改为包括onDemand = false :(柯克的建议-参见上文),这对我个人而言并不起作用。
从头开始重建项目。 (过去对我有用。)
评论
雅库布(Jakub),我有一个类似但无关的问题gis.stackexchange.com/questions/155016/…-事实证明,遗产也是一个问题。 .net框架版本不是最新的,因此,如果您尝试了所有这些版本,但仍无法正常工作,请通过链接查找另一种可能性。
–迈克尔·斯廷森(Michael Stimson)
15年7月29日在21:53
#3 楼
我唯一得到的时间是当我打开另一个ArcMap实例并忘记在构建/调试之前将其关闭时。如果您没有关闭使用该程序集的所有实例,那么旧的实例将继续使用。或类似的东西。评论
我尝试在不打开ArcMap的任何其他实例的情况下重新启动计算机,打开VS并运行调试器。它按照常规方式启动了ArcMap,但“死点”问题仍然存在。
–雅库布·西萨克地理图形学
11年8月16日在0:15
所以我只是在另一台机器上安装了ArcGIS和Visual Studio(全部全新安装),并且同一件事再次开始发生。我尝试了每个人的建议,您似乎是正确的。我确保杀死所有打开的ArcGIS进程,并且在这样做时可以使用断点。
–雅库布·西萨克地理图形学
2011年9月2日,0:24
#4 楼
由于项目的.NET Framework为4.0,因此我在ArcMap.exe.config中更改为supportedRuntime version="v4.0.30319"
,并且我注意到此更改延迟了问题。我还记得ArcMap还可以加载ArcCatalog,因此我也将ArcCatalog.exe.config更改为supportedRuntime version="v4.0.30319"
和YES!再次正常工作。我花了一整天的时间来解决此问题,希望它也对您有用。评论
我还必须删除bin和obj文件夹。
– Sabin Kolarov
2012年10月27日6:49
#5 楼
我尝试了上述建议一段时间,终于找到了解决方案。紧追其后,我将首先提供解决方案,然后给出解释:打开任务管理器。结束所有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。)
评论
是的,这听起来像是正确的解决方法。
–雅库布·西萨克地理图形学
13年1月8日在16:03
#6 楼
我正在处理相同的问题,但在其他主题中使用了自己的加载项,因此完成了以下工作:首先,开始调试,然后在菜单中选择以下窗口调试>> Windows >>模块,您可以在其中查看调试启动时加载了哪些模块。如果您在此处看不到yourAddIn.dll,那么至少您知道它没有被Studio加载。如果您看到那里并且无法在此处放置断点,则Studio加载了一个旧的。要检查这一点,请在项目属性中更改程序集的名称,重新生成解决方案,开始调试,然后您将看到旧的dll加载在那里。我不知道工作室是从哪里在哪里加载此旧dll的。
转到解决方案资源管理器,检查比较“ yourAddIn.Addin”和“ yourAddIn-用于Testing.AddIn”文件,它们可能不同。 Studio在其插件管理器中仅使用第二个文件!第一次更改还要更改其中的标签以引用正确的dll,您也可以检查该标签。对我来说,在“ yourAddIn-For Testing.AddIn”文件中将其设置为0,所以我将其更改为1。
(如果删除加载项的bin目录并启动studio,它将提示您,并询问您是否要从加载项列表中删除此加载项!此时Studio将LoadBehavior设置为0。)
在这两项更改之后,它又开始工作!
评论
感谢您分享您的经验,并乐意为我们提供详细信息。欢迎来到我们的社区!
– hu
2012年1月24日15:25
#7 楼
使用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时,它达到了断点。请注意,如果工具栏在启动时处于关闭状态,则需要使其可见以导致调用按钮构造函数-因此在某些方面它仍处于需求状态。
评论
谢谢@柯克。由于我已经从备份还原了项目,因此现在看来可以正常工作了。我通常会调试一个更进一步的过程。也就是说,即使是点击一次按钮,也是如此。我很确定这时程序集已经加载。 (或者应该是,但不是出于某种原因)我肯定会在下次发生这种情况时尝试此解决方案。
–雅库布·西萨克地理图形学
2011年8月15日在23:57
#8 楼
不得不更改我的arcCatalog插件,以使用框架4与新的10.1版本的ArcCatalog匹配。在
C:\ Program Files(x86)\ ArcGIS \ Desktop10.1 \ bin
ArcCatlog.exe xml配置文件
现在在断点处停止
似乎与arcmap是相同的问题
#9 楼
将ESRI ArcGIS 10项目从一台计算机迁移到另一台计算机后,我遇到了该计算机无法为ArcMap.exe加载调试.pdb文件的错误。我尝试了这篇文章的每条建议,但没有任何运气。然后我做了以下事情:
我删除了每个项目中所有Esri。*库的引用。包含它们,然后将它们重新添加到新计算机上的项目中。
这终于对我有用。如果有人在这个模糊的问题上迷路了,并且尝试过此页面上列出的所有其他内容,请尝试执行此操作-快速,轻松且无害。我不确定为什么要这样做,我想这与在每台计算机上查找库有关。
这是针对使用BaseCommands / Toolbars的项目,而不是新的加载项。在Windows 7 Pro上将ArcGIS 10.0和.NET 3.5与Visual Studio 2010结合使用。
#10 楼
对于那些针对.Net 4.0 Framework的用户,以下对我有用。根据许多建议,将ArcMap.exe.config和ArcCatalog.exe.config修改为目标4.0框架
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0.30319"/>
<!--supportedRuntime version="v2.0.50727"/-->
</startup>
由于某些原因,ArcCatalog.exe.config似乎已锁定,无法修改。我通过在其他目录中复制和修改它,然后替换它来解决它。
然后在Config.esriaddinx中将Addin语言更改为
"CLR4.0"
#11 楼
我想到了两个可能的原因:该外接程序未正确注册,因此DLL不会加载到正在调试的ArcMap进程中。
您的项目面向.NET 4.尝试改用.NET 3.5。
评论
面向.Net 3.5。我只是不明白为什么一切都可以正常工作,而突然之间却没有。
–雅库布·西萨克地理图形学
2011年8月15日在20:02
#12 楼
如果在同一个Visual Studio解决方案中使用多个项目进行编码,则可能会遇到Visual Studio(VS)“禁用”断点且无法单步执行代码的情况。这是最近发生的事情,我无法进入从主项目中调用的“依赖” DLL程序集项目。VS警告表明我的程序集(DLL)已过时且与我的代码不完全匹配。有VS选项可以关闭代码匹配的要求,但从直觉上来说,这似乎是一个坏主意,并且得到了Internet帖子的支持。我阅读了许多网站,并且那里有一些粗糙的建议。
最后,我从从属计算机中搜索了输出DLL,并在计算机的不同位置找到了一些旧副本(大概是来自早期的实验和项目配置)。所以我删除了所有这些,并从头开始重建我的解决方案。这解决了我的问题。我想我当前的项目无意中绑定到了一个旧副本,并且没有使用放置在调试文件夹中的最新版本。
#13 楼
对我有用的方法不是按照上述Jakub的帖子中所述删除arcmap.config.exe,而是将此文件中的“ supportedRuntime”标记设置为您在Visual Studio中定位的Framework的正确版本,我的情况是:<startup>
<supportedRuntime version="v3.5"/>
</startup>
#14 楼
在多个ArcObjects项目中,我汇总了调试可能不适用于加载项,扩展名和命令(预加载项)的原因的列表。没有特别的顺序:
您处于Visual Studio的Release模式,而不是Debug模式。
该工具的旧版本仍在ArcMap / ArcCatalog中注册,这些阻止了您的调试版本无法加载,或注册了其他相同名称的工具
项目/解决方案需要清理,并且如有必要,请进入\ bin和\ obj并删除任何残留的文件
在某些情况下,断点只能是激活工具后(按需)命中
如果未命中断点,则可能在构造函数中发生异常,并且该工具永远无法运行。通过在调试菜单中显示所有CLR异常来检查
C:\ Users \ <名称> \ Local Settings \ ESRI \ DesktopX.X \ AssemblyCache中的条目需要删除
许多步骤要求使用ArcMap重新启动。如果所有其他方法均失败,则重新启动计算机很容易,但我只有一次有所作为。
#15 楼
AnthonyWJones在https://stackoverflow.com/questions/7192361/silverlight-project-wont-enter-debug-mode中描述了对我有用的方法:“打开关联的Web项目的属性。选择Web Tab。滚动到底部,然后在“调试器”部分中确保选中“ Silverlight”。”
#16 楼
我曾经一两次发生这种情况。如果我没记错的话,我在进行较小的代码更改时就能够使断点正常工作,这意味着应用程序已重建。构建或重建项目时会发生什么?评论
我尝试重建项目并进行了一些更改,但断点仍然“死”了。
–雅库布·西萨克地理图形学
2011年8月15日23:59
#17 楼
我不敢相信会有更多的人没有这个问题。现在,几乎每次我在改进和调试加载项时都会遇到此问题。上述解决方案均无效。要解决此问题,我需要删除整个项目并从备份中还原它。这使我相信特定项目中的某些东西已经损坏,因为它通常是在调试期间ArcMap崩溃时开始发生的。
评论
是否有缠绵的ArcMap.exe进程?有时,加载项,扩展名,命令等可能会占用资源或导致竞争状况,从而阻止ArcMap完全退出。
–blah238
11-10-25在21:16
没有ArcMap.exe进程正在运行。我现在收到ESRI工作人员的答复,要求尝试从bin目录中的arcmap.exe.config中删除
–雅库布·西萨克地理图形学
2011-10-26 13:12
#18 楼
您是在使用Framework 4创建项目吗?我遇到了同样的问题,但是当我切换到Framework 3.5时,它工作正常。
#19 楼
尝试清理并重建,然后在不调试的情况下运行,当应用程序运行时将其附加到VS
评论
配置文件中的“ onDemand” xml属性是否设置为false?我没有明确的答案(尽管通常这意味着调试器无法找到已加载dll的pdb文件),但是您可以尝试在SO上筛选这些问题,以查看它们是否朝着正确的方向发展。
@柯克,我在config.esriaddinx文件中看不到这样的属性。
@Michael-谢谢。会仔细看看。问题是我可以在几个月内向我的外接程序添加功能,然后愉快地进行调试,突然断点不起作用...
我也曾无缘无故地发生过几次。如果我记得,删除obj和bin目录可以解决几次,将可疑的pdb和dll复制到当前项目的bin目录中可以工作几次,等等。我无法指出的是,每次都可以,虽然。祝你好运。