Ab und zu stoße ich auf folgendes Problem:
Ich beginne mit dem Debuggen des Add-Ins und Haltepunkte werden ignoriert. Fast scheint die Kommunikation zwischen der IDE und der Komponente nicht zu funktionieren.
Mein Problem ist, dass ich es das letzte Mal gelöst habe und mich jetzt nicht mehr erinnern kann, was ich getan habe, um es zu beheben.
Der Haltepunkt wird derzeit nicht erreicht. Für das Dokument wurden keine Symbole geladen.
Teilweise ist das Problem, das ich habe, hier bereits beschrieben , aber es gibt keine Lösung für die tatsächliche Störung des Haltepunkts.
Bitte beachten Sie, dass dies normalerweise funktioniert.
Das Löschen der Bin und des Obj scheint nicht zu funktionieren.
Dieses Mal habe ich gerade mein gesamtes Projekt aus dem Backup wiederhergestellt und von vorne begonnen, aber ich würde gerne wissen, wie ich das beheben kann, wenn ich darauf noch einmal stoße.
quelle
Antworten:
Hier ist eine inoffizielle und noch nicht getestete Lösung von ESRI-Mitarbeitern. (Sie haben betont, dass dies keine offizielle Lösung ist)
Versuchen Sie, die Datei arcmap.exe.config aus dem bin-Verzeichnis zu entfernen.
Dies ist die XML-Datei \ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config.
quelle
Debug.WriteLine()
Nachrichten in VS 2010 nicht an das Ausgabefenster gesendet wurden.2 Jahre und 2 Versionen später und das ist immer noch ein Problem. Ich habe gerade alle meine Addins für 10.2 aktualisiert / verbessert und bin erneut auf dieses Problem gestoßen. Implementiert alle Vorschläge in diesem Beitrag und nichts hat funktioniert, aber ich habe 1 zusätzliches mögliches Problem entdeckt . Leider bin ich mir nicht sicher, ob dies der Schuldige war oder nicht, da ich gleichzeitig auch die meisten anderen möglichen Korrekturen implementiert habe.
Neuer Fund: Ich habe festgestellt, dass ich Addins seit Version 10 auf demselben Computer entwickle und nach der Neuinstallation ältere ArcGIS-Daten nicht immer bereinigt habe. Ich habe festgestellt, dass ich eine ältere Version des Täter-Add-Ins in einer früheren Version von ArcGIS-Daten in C: \ Programme (x86) \ ArcGIS hatte. Da ArcGIS die älteren Add-Ins lädt, bestand möglicherweise ein Konflikt. Ich habe alle älteren arcgis-Anwendungsdaten (Desktop10.0, Desktop10.1) entfernt, sodass nur Desktop10.2 übrig blieb und der Haltepunkt zum Leben erweckt wurde. Auch hier bin ich nicht 100% ig, wenn dies die Lösung ist, aber es könnte sich um ein anderes Element auf der Liste handeln, auf das geprüft werden muss.
Ich habe gesehen, dass dieses spezielle Problem auf einer anderen Website als "der ultimative Produktivitätskiller" bezeichnet wird, und ich konnte nicht mehr zustimmen.
Zusammenfassend ist hier meine aktuelle To-Do-Liste für das Problem der toten Haltepunkte:
Stellen Sie sicher, dass das Add-In tatsächlich ausgeführt wird. Es reicht nicht aus, wenn der Debugger die Anwendung startet - der Haltepunkt wird "tot" angezeigt, bis ich das Add-In (Schaltfläche, Menüoption usw.) ausführe.
Löschen Sie OBJ- und BIN-Futter aus dem Projektverzeichnis.
Löschen Sie den Inhalt von assebmly chache: C: \ Users \ User \ AppData \ Local \ ESRI \ Desktop10.2 \ AssemblyCache
Löschen Sie alle alten Baugruppendaten. (Wenn die aktuelle Version 10.2 ist, löschen Sie die Desktop10.0- und Desktop10.1-Baugruppendaten.) Es gibt keinen Beweis dafür, dass dies hilft oder Teil des Problems ist, aber es gibt keinen Grund, warum diese Daten existieren müssen. Daher lösche ich sie nur für den Fall (C : \ Benutzer \ Benutzer \ AppData \ Local \ ESRI)
Gemäß dem Unterstützungsvorschlag von ESRI; Ändern Sie das ArcCatalog- und ArcMap-Konfigurations-XML (funktionierte nicht von selbst, als ich es versuchte, aber mehrere Personen haben dies als Lösung empfohlen, einschließlich ESRI-Unterstützung). Suchen Sie ArcCatalog.exe.config und ArcMap.exe.config in C: \ Programme ( x86) \ ArcGIS \ Desktop10.2 \ bin Öffnen Sie jede XML-Datei im Editor und entfernen Sie die Zeile.
<supportedRuntime version="v2.0.50727"/>
Es geht um die fünfte ZeileLöschen Sie alle älteren ArcGIS-Anwendungsdaten aus dem Installationsverzeichnis. Das hat bei mir funktioniert. (wahrscheinlich) Wechseln Sie zu: C: \ Programme (x86) \ ArcGIS Löschen Sie alle Ordner außer den aktuellen Ordnern für Desktop10.x (dh Desktop10.0, Desktop10.1). Nur die aktuelle Desktop-Version sollte an diesem Speicherort verbleiben.
Entfernen Sie alle Projektverweise, einschließlich der Nicht-ESRI-Verweise, und fügen Sie sie erneut hinzu. Wiederholen Sie die Schritte 2 und 3, kompilieren Sie sie erneut und führen Sie dbugger aus.
Computer neu starten. (Dies hat in der Vergangenheit auch schon so oft funktioniert) Dies war auch eine der empfohlenen Lösungen für Stack Overflow.
In Config.esriaddinx - ändern Sie die Schaltfläche, um onDemand = false einzuschließen: (Kirks Vorschlag - siehe oben) Dies hat für mich persönlich nicht funktioniert.
Projekt von Grund auf neu erstellen. (Das hat in der Vergangenheit bei mir funktioniert.)
quelle
Das einzige Mal, dass ich dies erhalte, war, als ich eine andere ArcMap-Instanz geöffnet hatte und vergaß, sie vor dem Erstellen / Debuggen zu schließen. Wenn Sie nicht alle Instanzen mit der Assembly schließen, wird die alte weiterhin verwendet. Oder etwas ähnliches.
quelle
Da .NET Framework meines Projekts 4.0 ist, habe ich
supportedRuntime version="v4.0.30319"
in ArcMap.exe.config geändert und festgestellt, dass das Problem durch diese Änderung verzögert wurde. Ich erinnerte mich auch, dass ArcMap auch ArcCatalog lädt, also habe ich auch ArcCatalog.exe.config in geändertsupportedRuntime version="v4.0.30319"
und JA !!! Es geht wieder. Ich habe den ganzen Tag versucht, dieses Problem zu beheben, und ich hoffe, dass es auch bei Ihnen funktioniert.quelle
Ich habe die obigen Vorschläge eine Weile ausprobiert und bin schließlich zu einer Lösung gekommen. Wenn ich zur Sache komme, gebe ich zuerst die Lösung und dann die Erklärung:
Öffnen Sie den Task-Manager. Beenden Sie den Prozess für eine Kopie von ArcMap.exe.
Öffnen Sie einen Windows Explorer. Navigieren Sie zu C: \ Users \\ Local Settings \ ESRI \ Desktop10.
Wenn AssemblyCache nicht angezeigt wird, deaktivieren Sie "Organisieren> Ordner- und Suchoptionen> Anzeigen> Geschützte Betriebssystemdateien ausblenden (empfohlen)".
Suchen Sie in den Verzeichnissen in AssemblyCache nach dem Verzeichnis, das Ihre DLL enthält.
Löschen Sie die DLL.
Erstellen Sie das Projekt neu und debuggen Sie. Sobald Ihr Add-In aktiviert ist, sollte der Cache-Inhalt aktualisiert werden.
Wenn gewünscht, verstecken Sie die geschützten Betriebssystemdateien erneut.
Das Problem für mich war, dass es eine alte Instanz meiner DLL im Ordner C: \ Users \\ Local Settings \ ESRI \ DesktopX.X \ AssemblyCache \ gab und ich \ AssemblyCache auch nicht sehen konnte, weil ich es nicht erkannte Es war eine versteckte OS-Datei. Es wurde auch eine Zombie-Instanz von ArcMap ausgeführt. Als ich versuchte, die DLL zu löschen, war sie zunächst gesperrt. Mein Verdacht ist, dass das Problem in erster Linie darin besteht, dass ich eine Debug-Sitzung von ArcMap nicht vollständig beendet habe, bevor ich den Code neu kompiliert und eine andere gestartet habe. Die alte DLL im Cache konnte nicht überschrieben werden, da sie in der alten ArcMap-Instanz noch gesperrt war und die zwischengespeicherte Version nicht mehr aktualisiert wurde, sobald sie nicht mehr mit dem neuen Code synchronisiert war. (Anhand der Dateidaten kann ich erkennen, dass die Dateien .config, .pdb und .xml aktualisiert werden, nicht jedoch die DLL.)
quelle
Ich beschäftigte mich mit dem gleichen Problem, mit meinem eigenen Add-In in einem völlig anderen Thema, und ich untersuchte Folgendes:
Starten Sie zunächst das Debugging und wählen Sie im Menü das folgende Fenster Debugging >> Windows >> Module, in dem Sie sehen können, welche Module beim Start des Debugs geladen wurden. Wenn Sie die yourAddIn.dll dort nicht sehen können, wissen Sie zumindest, dass sie nicht vom Studio geladen wurde. Wenn Sie dort sehen und den Haltepunkt dort nicht platzieren können, hat das Studio einen alten geladen. Um dies zu überprüfen, ändern Sie den Namen der Assembly in den Projekteigenschaften, erstellen Sie die Projektmappe neu, starten Sie das Debugging, und die alte DLL wird dort geladen. Ich weiß nicht, woher das Studio diese alte DLL lädt.
Rufen Sie den Projektmappen-Explorer auf und überprüfen Sie, ob die Dateien "yourAddIn.Addin" und "yourAddIn - For Testing.AddIn" miteinander verglichen wurden. Möglicherweise unterscheiden sie sich. Das Studio verwendet nur die 2. Datei in seinem Add-In-Manager! Bei der ersten Änderung Ändern Sie auch das Tag darin, um auf die richtige DLL zu verweisen, und Sie können das Tag auch überprüfen. Für mich wurde der Wert in der Datei "yourAddIn - For Testing.AddIn" auf 0 zurückgesetzt, daher habe ich ihn wieder auf 1 geändert. (Wenn Sie das bin-Verzeichnis Ihres Add-Ins löschen und das Studio starten, werden Sie dazu aufgefordert und gefragt Damit möchten Sie dieses Add-In aus Ihrer Add-In-Liste entfernen! An dieser Stelle setzt das Studio das LoadBehavior auf 0.)
Nach diesen beiden Änderungen hat es wieder funktioniert!
quelle
Mit Visual Studio habe ich ein neues Add-In für Arcmap erstellt und eine Schaltfläche und eine Symbolleiste hinzugefügt. Das Ergebnis ist eine Konfigurationsdatei, die so aussieht:
Ich habe im Konstruktor einen Code für den Button erstellt und einen Haltepunkt eingefügt. Ich habe im Debug-Modus begonnen und festgestellt, dass die Assembly noch nicht geladen wurde:
Ich habe die Schaltfläche so geändert, dass sie onDemand = false enthält:
Als ich arcmap erneut startete, traf es den Haltepunkt. Wenn die Symbolleiste beim Start deaktiviert ist, müssen Sie sie sichtbar machen, damit der Schaltflächenkonstruktor aufgerufen wird. In gewisser Weise ist sie also immer noch bei Bedarf.
quelle
Ich musste mein Add-In für arcCatalog so ändern, dass es mit Framework 4 mit der neuen Version 10.1 von ArcCatalog übereinstimmt.
Gerade auskommentiert die Version = "v2.0.50727" und unkommentiert "v4.0.30319"
In C: \ Programme (x86) \ ArcGIS \ Desktop10.1 \ bin die XML-Konfigurationsdatei ArcCatlog.exe
stoppt jetzt am Haltepunkt
Scheint dasselbe Problem mit arcmap zu sein
quelle
Nachdem ich ein ESRI ArcGIS 10-Projekt von einem Computer auf einen anderen migriert habe, ist der Fehler aufgetreten, dass der Computer die Debug-PDB-Dateien für ArcMap.exe nicht laden konnte. Ich habe jeden Ratschlag zu diesem Beitrag ohne Glück ausprobiert.
Dann habe ich folgendes gemacht:
Ich habe die Referenzen für alle Esri. * -Bibliotheken in jedem Projekt gelöscht, in dem sie enthalten waren, und sie dem Projekt auf dem neuen Computer erneut hinzugefügt.
Dies ist, was schließlich für mich gearbeitet hat. Wenn hier jemand mit diesem vagen Problem stolpert und alles versucht hat, was auf dieser Seite aufgeführt ist, versuchen Sie es - es ist schnell und einfach und ziemlich harmlos. Ich bin nicht ganz sicher, warum dies getan werden musste, ich vermute, es hat mit dem Nachschlagen der Bibliotheken pro Computer zu tun.
Dies war für ein Projekt, das BaseCommands / Toolbars und nicht die neuen Add-Ins verwendete. Verwenden von ArcGIS 10.0 und .NET 3.5 mit Visual Studio 2010 unter Windows 7 Pro.
quelle
Für diejenigen, die auf .Net 4.0 Framework abzielen, hat Folgendes für mich funktioniert.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0.30319"/> <!--supportedRuntime version="v2.0.50727"/--> </startup>
Aus irgendeinem Grund scheint ArcCatalog.exe.config für Änderungen gesperrt zu sein. Ich habe es umgangen, indem ich es in ein anderes Verzeichnis kopiert und geändert und dann ersetzt habe.
"CLR4.0"
quelle
Zwei mögliche Ursachen kommen mir in den Sinn:
Das Add-In ist nicht ordnungsgemäß registriert, sodass die DLL nicht in den zu debuggenden ArcMap-Prozess geladen wird.
Ihr Projekt zielt auf .NET 4. Versuchen Sie stattdessen, .NET 3.5 als Ziel festzulegen.
quelle
Wenn Sie mit mehreren Projekten in derselben Visual Studio-Lösung codieren, können Situationen auftreten, in denen Visual Studio (VS) Ihre Haltepunkte "deaktiviert" und Sie nicht in der Lage sind, Ihren Code schrittweise zu durchlaufen. Dies ist mir kürzlich passiert, als ich nicht in ein "abhängiges" DLL-Assembly-Projekt eintreten konnte, das von meinem Hauptprojekt aufgerufen wurde.
VS-Warnungen deuteten darauf hin, dass meine Assembly (DLL) veraltet war und nicht genau mit meinem Code übereinstimmte. Es gibt VS-Optionen zum Deaktivieren der Anforderung, dass Code übereinstimmt, aber intuitiv schien dies eine schlechte Idee zu sein und wurde durch Internet-Posts gesichert. Ich habe viele Websites gelesen und es gibt einige knorrige Vorschläge.
Am Ende habe ich die Ausgabe-DLL von meinem abhängigen Computer gesucht und mehrere alte Kopien an verschiedenen Stellen auf meinem Computer gefunden (vermutlich aus früheren Experimenten und Projektkonfigurationen). Also habe ich alle gelöscht und meine Lösung von Grund auf neu erstellt. Dies hat mein Problem behoben. Ich vermute, mein aktuelles Projekt war versehentlich an eine der alten Kopien gebunden und verwendete nicht den neuesten Build, der in meinem Debug-Ordner abgelegt wurde.
quelle
Was für mich funktionierte, war nicht das Löschen der Datei "arcmap.config.exe", wie im obigen Beitrag von Jakub beschrieben, sondern das Setzen des "supportedRuntime" -Tags in dieser Datei auf die richtige Version des Frameworks, auf das Sie in Visual Studio abzielen, in meinem Fall:
quelle
In einer Reihe von ArcObjects-Projekten habe ich eine Liste mit Gründen zusammengestellt, warum das Debuggen für Add-Ins, Erweiterungen und Befehle (Pre-Add-In) möglicherweise nicht funktioniert. In keiner bestimmten Reihenfolge:
Bei vielen Schritten muss ArcMap neu gestartet werden. Wenn alles andere fehlschlägt, ist ein Neustart der Maschine ein einfacher Fallback, aber ich habe nur einmal einen Unterschied gemacht.
quelle
Was für mich funktioniert hat, wurde von AnthonyWJones unter /programming/7192361/silverlight-project-wont-enter-debug-mode beschrieben : "Öffnen Sie die Eigenschaften des zugeordneten Webprojekts . Wählen Sie die Registerkarte" Web ". Scrollen Sie zu Vergewissern Sie sich im unteren Bereich und im Abschnitt "Debugger", dass "Silverlight" aktiviert ist. "
quelle
Das ist mir ein- oder zweimal passiert. Wenn ich mich richtig erinnere, konnte ich den Haltepunkt zum Funktionieren bringen, als ich eine geringfügige Codeänderung vornahm, was bedeutete, dass die Anwendung neu erstellt wurde. Was passiert, wenn Sie Ihr Projekt erstellen oder neu erstellen?
quelle
Ich kann nicht glauben, dass mehr Menschen dieses Problem nicht haben. Ich stoße jetzt fast jedes Mal darauf, wenn ich meine Add-Ins verbessere und debugge.
Keine der oben genannten Lösungen funktioniert. Um dies zu beheben, muss das gesamte Projekt gelöscht und aus dem Backup wiederhergestellt werden. Dies lässt mich glauben, dass etwas in dem bestimmten Projekt beschädigt wurde, da es normalerweise auftritt, wenn ArcMap während des Debuggens abstürzt.
quelle
Erstellen Sie Ihr Projekt mit Framework 4? Ich hatte das gleiche Problem, aber wenn ich auf Framework 3.5 umsteige, funktioniert es einwandfrei.
quelle
Versuchen Sie zu bereinigen und neu zu erstellen, und führen Sie es dann aus, ohne zu debuggen. Wenn die Anwendung ausgeführt wird, fügen Sie es in VS hinzu
quelle
Ich weiß, dass dies zu offensichtlich klingt, aber ich erwähne trotzdem, dass Sie die entsprechende Edition von Visual Studio benötigen. Dieses Problem kann beispielsweise bei einer Express-Edition eines bestimmten Jahres auftreten, während es bei einer Ultimate-Edition funktionieren kann. Wenn Sie beispielsweise 2010 verwenden, wechseln Sie zu 2012. Wechseln Sie dann von Express zu Ultimate. Ich würde dies tun, wenn Sie noch nicht mit Problemen beim Laden von Symbolen experimentiert haben. ESRI bietet Informationen zum Herunterladen der Symbole in den Cache, wie im obigen Link angegeben (ArcObjects 10 .NET SDK-Hilfe). Dies ist jedoch möglicherweise nicht erforderlich. Stellen Sie vor dem Debuggen sicher, dass Sie das entsprechende .net-Framework verwenden, z. B. .net 3.5 für ältere Editionen.
quelle