Es war ein Münzwurf, ob es sich bei dieser Frage um eine GIS.SE- oder eine StackOverflow-Frage handelt ... Ich gehe mit GIS.SE, weil das Problem bei ArcCatalog zu liegen scheint.
Ich habe mehrere Addins, die für ArcCatalog (und auch ArcMap) geschrieben wurden. Früher konnte ich den Code mit F5-Debugging mithilfe von Haltepunkten debuggen. Jetzt sind alle meine Haltepunkte mit der Meldung inaktiv. Der Haltepunkt wird derzeit nicht erreicht. Für dieses Dokument wurden keine Symbole geladen :
Ich habe die Vorschläge von Stack Overflow ausprobiert:
Der Haltepunkt wird derzeit nicht erreicht. Für dieses Dokument wurden keine Symbole geladen
und auch
Warum kann der Haltepunkt beim Debuggen eines ArcGIS 10-Add-Ins nicht "getroffen" werden? Dies scheint jedoch ein anderes Problem zu sein.
Da dies ein Addin (DLL) ist, gibt es kein Startprojekt. Ich habe alle anderen Versionen gereinigt . Ich habe eine subtile Änderung an der Esriaddinx-Datei in der vorgenommen message=
, um zu bestätigen, dass die Änderungen vorgenommen wurden - alles gut, es gibt keine ältere Version.
Während der Bereinigung habe ich festgestellt, dass Add-Ins für ArcCatalog an einen Ort kopiert werden, an %USERPROFILE%\Documents\ArcGIS\AddIns\Desktop10.X\{AddInID}\
dem sich ArcMap-Add-Ins nicht befinden. Ich habe versucht, die PDF-Datei in den Add-In-Ordner zu kopieren, aber es scheint, dass der Code nicht mehr debuggt wird und ArcCatalog auf die Kopie umgeschaltet / umgeleitet wurde.
Gibt es eine Möglichkeit zum Debuggen mit Haltepunkt-Addins für ArcCatalog? Beachten Sie, dass ArcMap-Add-Ins und eigenständige Anwendungen problemlos debuggen.
Umgebung:
- Windows 7 64bit
- ArcGis 10.1
- Visual Studio 2010 Professional (sowohl VB.net als auch C #)
quelle
Antworten:
Upgrade meines ersten Kommentars auf eine Antwort:
Ich hatte ein ähnliches Problem mit ArcMap 10.3 in Kombination mit Visual Studio 2013. Ich habe dieselben Beiträge gefunden, die @ michael-miles-stimulson erwähnt hat, und tatsächlich konnte ich an einem Punkt tatsächlich debuggen und einen Haltepunkt erreichen. Aber aus irgendeinem Grund hörte das nach einer Weile auf zu arbeiten, und ich konnte es auf keinen Fall wieder zum Laufen bringen.
Schließlich habe ich das Zielframework in meinem Projekt von .Net 4.5 auf .Net 3.5 zurückgesetzt und die unterstützte Laufzeit in der .exe.config auf v2.0.50727 festgelegt. Das hat es für mich gelöst.
Wenn das ArcCatalog-Add-In 4.5 und das ArcMap One-Add-In 3.5 verwendet, wird das in der Frage erläuterte Verhalten erläutert.
Ich denke nicht, dass es wichtig ist, wenn Sie die Client- oder Vollversion verwenden. Ich verwende immer die Vollversion, da mir an einem Punkt immer eine Klasse fehlt, die nicht in der Client-Version enthalten ist.
quelle
Tatsächlich werden Arcmap-Addins auch nach der Installation (oder einem Build in Visual Studio) an diesen Speicherort kopiert.
Führen Sie die folgenden Schritte aus, um dieses Problem zu lösen:
Reinigen Sie Ihre gesamte Lösung in Visual Studio, indem Sie mit der rechten Maustaste auf die Lösung klicken und "Lösung reinigen" wählen
Wenn Ihr Arccatalog-Add-In-Projekt von anderen Assemblys von Drittanbietern abhängig ist, stellen Sie sicher, dass diese Assemblys PDF-Dateien (Symbol) neben sich haben
Wenn Sie in Visual Studio andere Projekte in Ihrer Lösung haben, von denen Ihr Arccatalog-Projekt abhängig ist, fügen Sie deren Projektreferenz anstelle ihrer DLLs hinzu. wie dieses Bild:
quelle
Ok, ich habe gerade überprüft, ob ich mit diesem Verfahren den Code schrittweise durchlaufen kann.
Ich mache dies in ArcMap, aber ich denke, es sollte für ArcCatalog gelten, da sich der Prozess mit dem Debuggen von DLLs und nicht mit einem ESRI-spezifischen Element befasst.Ich habe dies sowohl in ArcMap 10.2.2 als auch in ArcCatalog 10.2.2 bestätigt. Da dies ein Windows-Prozess ist, der sich direkt mit DLLs befasst, sollten ESRI-Softwareversionen keine Rolle spielen.Ich verwende Visual Studio, um an einen Prozess anzuhängen .
Ich kann mit diesem Prozess eine kompilierte Erweiterung (DLL) durchlaufen, wenn die DLL in einem anderen Programm aufgerufen wird.
Hier ist was ich tue ...
Öffnen Sie in Visual Studio Ihr Erweiterungsprojekt. Ich habe meine Erweiterung in VS 2010 C # Express erstellt, verwende dafür jedoch VS 2013 Ultimate. Ich bin nicht sicher, ob " An Prozess anhängen" in der 2010 Express-Version eine Option ist. Ich habe es nicht gesehen, aber es könnte irgendwo versteckt sein, da es die Express-Version war.
Öffnen Sie Ihr ESRI-Produkt und installieren Sie das Add-In. Klicken Sie nun in VS auf An Prozess anhängen und wählen Sie Ihren ESRI-Produktprozess aus. Meins war ArcMap.exe . Von hier aus sollte Visual Studio seinen Debugger an das Programm anhängen. Wenn die DLL ausgeführt wird, für die Sie geöffnet und Haltepunkte festgelegt haben, wird sie dort gestoppt. Dies funktioniert wie jedes andere Programm, das Sie in Visual Studio debuggen. Es kann einige Debug in einige der ESRI Artikel strecken , obwohl der Code die meisten ist wahrscheinlich so nicht so nützlich verschleiert.
Ich habe sichergestellt, dass ich das Add-In aus meinem Release-Verzeichnis für mein Projekt installiert habe. Soweit ich das beurteilen kann, kopiert ESRI die DLL nicht in einen ihrer Ordner, sondern verwendet ihr Esri Assembly Registration Utility , um den Speicherort der DLL zu registrieren, damit das System weiß, wo es zu finden ist, wenn auf ein ESRI-Produkt verwiesen wird.
Zu Ihrer Information: Ich verwende diesen Prozess, um Klassenbibliotheken zu debuggen, die ich in einem Projekt schreibe und die in einem anderen verwendet werden. Dieselbe Theorie sollte dort ESRI-Add-Ins anwenden, da es sich nur um Klassenbibliotheken (DLLs) handelt, die in ein anderes Programm aufgerufen werden. Abgesehen von Visual Studio sollte meines Erachtens jeder andere Windows-Debugger eine Verbindung zur DLL herstellen können.
BITTE poste Kommentare zu diesem Thema. Ich habe gedacht, dass dies für eine Weile funktionieren würde und bin sehr gespannt, wie andere mit dieser Methode fair umgehen.
BEARBEITEN Ich habe gerade ein neues ArcCatalog-Add-In erstellt, das aus einer einfachen Schaltfläche besteht. Ich habe
string stophere = "debugger stopped!";
im Ereignishandler eine Zeichenfolgenzuweisung für das Klickereignis der Schaltfläche hinzugefügt . In ArcCatalog wurde die Verwendung der Methode " An Prozess anhängen" nicht mehr verwendet . Informationen zu Visual Studio 2010 zum Prozess finden Sie hier .In MSDN gibt es einige Dinge zum Debuggen von DLLs mit verschiedenen Methoden in Visual Studio und Windows Debugger. Ich persönlich finde das Anhängen an den Prozess besser als das Starten einer externen Programmmethode und auch besser als die Verwendung des Remote-Debuggers .
Der einzige Nachteil dieser Methode ist, dass Sie den F5- Ansatz verlieren, bei dem Sie direkt in Visual Studio debuggen. Nehmen Sie also Änderungen an Ihrem Code vor, installieren Sie das Update, starten Sie ArcCatalog, hängen Sie es an den Prozess an und treffen Sie dann Ihre Haltepunkte. Ich finde jedoch, dass diese Methode ziemlich gut zu wissen ist, falls Sie auf Probleme stoßen, wie Sie sie haben. Dieser Vorgang kann etwas länger dauern, ist jedoch eine todsichere Methode, um Ihre Ergebnisse zu erzielen.
quelle
Dies ist eine Datei, die ich über ein paar Jahre mit ArcMap- und ArcCatalog-Erweiterungen und dann mit Add-Ins erstellt habe:
Dinge, die verhindern können, dass ArcMap Add-Ins in Visual Studio debuggt:
quelle
Hier ist die Lösung:
Versuchen Sie, SupportedRuntime aus arcmap.exe.config im Verzeichnis bin zu entfernen.
Dies ist die XML-Datei \ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config.
Warum kann der Haltepunkt beim Debuggen eines ArcGIS 10-Add-Ins nicht "getroffen" werden?
quelle
Einige offensichtliche Schritte (ich nehme an, Sie haben diese bereits ausprobiert ... aber immer noch).
quelle