Tidak dapat men-debug Esri Addin untuk ArcCatalog

8

Itu adalah pelemparan koin apakah pertanyaan ini adalah GIS.SE atau pertanyaan StackOverflow ... Saya akan dengan GIS.SE karena masalahnya tampaknya terletak pada ArcCatalog.

Saya memiliki beberapa addins yang telah ditulis untuk ArcCatalog (dan juga ArcMap); sebelumnya saya bisa men-debug kode F5 menggunakan breakpoints sekarang semua breakpoints saya tidak aktif dengan pesan Breakpoint saat ini tidak akan terkena. Tidak ada simbol yang dimuat untuk dokumen ini :

masukkan deskripsi gambar di sini

Saya telah mencoba saran dari Stack Overflow:

Memperbaiki “Breakpoint saat ini tidak akan dipukul. Tidak ada simbol yang dimuat untuk dokumen ini. "

Breakpoint Ini Saat Ini Tidak Akan Menjadi Hit, Kode Sumber berbeda dari yang Asli (bahkan setelah pembersihan / pembangunan kembali)

Breakpoint saat ini tidak akan dipukul. Tidak ada simbol yang dimuat untuk dokumen ini

dan juga

Mengapa breakpoint tidak menjadi "hit" saat men-debug Add-In ArcGIS 10? tetapi ini tampaknya menjadi masalah yang berbeda.

Karena ini adalah Addin (dll) sehingga tidak ada proyek startup. Saya telah membersihkan semua versi lainnya. Saya membuat perubahan halus pada file Esriaddinx di message=untuk mengkonfirmasi perubahan yang dilakukan - semua baik, tidak ada versi yang lebih lama.

Sementara pembersihan saya perhatikan bahwa addins untuk ArcCatalog disalin ke %USERPROFILE%\Documents\ArcGIS\AddIns\Desktop10.X\{AddInID}\tempat addins ArcMap tidak .. Saya telah mencoba menyalin file pdb ke folder addin tetapi tampaknya kode tersebut tidak lagi di-debug dan ArcCatalog telah beralih / dialihkan ke salinan.

Apakah ada cara untuk debug dengan addpoint breakpoint untuk ArcCatalog? Perhatikan bahwa add-on ArcMap dan debug aplikasi mandiri baik-baik saja.

Lingkungan Hidup:

  • Windows 7 64bit
  • ArcGis 10.1
  • Visual Studio 2010 Professional (baik VB.net dan C #)
Michael Stimson
sumber
Saya punya masalah yang sama dengan ArcMap 10.3 dikombinasikan dengan Visual Studio 2013. Saya menemukan semua posting yang sama yang Anda sebutkan, dan memang, pada satu titik saya benar-benar bisa men-debug dan mencapai breakpoint. Tetapi untuk beberapa alasan yang berhenti bekerja setelah beberapa saat, dan tidak mungkin saya bisa membuatnya bekerja lagi. Akhirnya, saya mengembalikan kerangka target dalam proyek saya kembali dari .Net 4.5 ke .Net 3.5 dan mengatur didukungRuntime di .exe.config ke v2.0.50727. Itu menyelesaikannya untuk saya. Mungkin pengaya ArcCatalog Anda menggunakan 4.5 dan ArcMap satu 3.5?
Berend
Itu kemungkinan @Berend. Kerangka Target (semua konfigurasi) diatur ke .NET Framework 3.5 Profil Klien ... haruskah itu menjadi 4 atau 4 Profil Klien? Alat ini sangat tua, aslinya ditulis dalam VB6, itu dikonversi ke .net di ArcGis 9.3 yang menggunakan 3.5 jadi ketika itu dikonversi ke addin kerangka tidak diubah - itu dikompilasi dan dijalankan OK jadi saya tidak melihat perlu mengubahnya. Saya benar-benar berpikir Anda sedang mengerjakan sesuatu di sini - sesuatu yang belum saya lihat di posting lain.
Michael Stimson
ITULAH @Berend !!! tolong tulis itu sebagai jawaban untuk mengumpulkan hadiahmu. Saya mengubah kerangka kerja target menjadi Profil Klien .NET Framework 4 dan breakpoints menjadi aktif; Saya tahu pasti ada sesuatu yang sederhana namun tersembunyi yang saya abaikan ... Terima kasih banyak . Sekarang saya dapat men-debug kode ini dengan benar.
Michael Stimson

Jawaban:

2

Meningkatkan komentar awal saya menjadi sebuah jawaban:

Saya punya masalah yang sama dengan ArcMap 10.3 dalam kombinasi dengan Visual Studio 2013. Saya menemukan semua posting yang sama yang disebutkan @ michael-miles-stimson, dan memang, pada satu titik saya benar-benar bisa men-debug dan mencapai breakpoint. Tetapi untuk beberapa alasan yang berhenti bekerja setelah beberapa saat, dan tidak mungkin saya bisa membuatnya bekerja lagi.

Akhirnya, saya mengembalikan kerangka target dalam proyek saya kembali dari .Net 4.5 ke .Net 3.5 dan mengatur didukungRuntime di .exe.config ke v2.0.50727. Itu menyelesaikannya untuk saya.

Jika tambahan ArcCatalog menggunakan 4.5 dan ArcMap satu 3.5, itu akan menjelaskan perilaku yang dijelaskan dalam pertanyaan.

Saya tidak berpikir itu penting jika Anda menggunakan versi Klien atau Lengkap, saya selalu cenderung menggunakan Penuh, karena pada satu titik, saya sepertinya selalu kehilangan kelas yang tidak ada dalam versi Klien.

Berend
sumber
Berend terima kasih. Itu benar-benar memperbaiki masalah, menerima karunia dengan pujian saya.
Michael Stimson
1

Sementara pembersihan saya perhatikan bahwa addins untuk ArcCatalog disalin ke% USERPROFILE% \ Documents \ ArcGIS \ AddIns \ Desktop10.X {AddInID} \ di mana addC ArcMap tidak

Sebenarnya Addins Arcmap disalin ke lokasi itu setelah instalasi juga (atau Build in Visual studio).

Untuk mengatasi masalah ini coba langkah-langkah ini:

  1. Bersihkan seluruh Solusi Anda di studio visual dengan mengklik kanan pada solusi dan pilih Bersihkan Solusi

  2. jika proyek addin arccatalog Anda bergantung pada majelis pihak ketiga lainnya, maka pastikan majelis tersebut memiliki file .pdb (simbol) di sampingnya

  3. Di studio visual, jika Anda memiliki proyek lain dalam solusi Anda yang tergantung pada proyek arccatalog Anda, maka tambahkan referensi proyek mereka alih-alih dll. seperti gambar ini:

masukkan deskripsi gambar di sini

Farid Cheraghi
sumber
Saya melakukan pembersihan, itu adalah salah satu hal pertama yang saya lakukan, tidak ada proyek lain atau majelis pihak ke-3 (mungkin, ini membutuhkan pustaka Excel v12) ... apakah menurut Anda objek Excel menyebabkan masalah ini? jika demikian, bagaimana saya bisa mendapatkan file pdb untuk itu - saya tidak berpikir Microsoft akan memberi saya kode sumber mereka terlepas dari berapa usia versi itu.
Michael Stimson
Sangat mungkin. Cukup hapus objek excel, bersihkan dan coba lagi debug.
Farid Cheraghi
berbagi kode sumber dari microsoft adalah no. Untuk pdb, google saja.
Farid Cheraghi
1
Excel / ArcObjects adalah apa yang saya butuhkan untuk debug. Untuk beberapa alasan, ia akan membahas tentang X dan berhenti. Saya tahu bahwa ArcGis v10.x mendukung lembar bentang Excel namun kode ini, dan lembar terkait, berasal dari ArcGis 9.1 dan lembar tidak sesuai (header ada di baris 3). Posting ini memberikan instruksi untuk mendapatkan pdb social.msdn.microsoft.com/Forums/office/en-US/… jadi saya akan mencobanya.
Michael Stimson
1
Farid, ternyata itu adalah versi .NET framework yang menyebabkan masalah. Ini mungkin ada hubungannya dengan Excel yang tidak ingin bermain game dengan versi lama. Salah satu dari banyak pembaruan Microsoft mungkin mengacaukan kemampuan untuk menggunakan objek Excel 12 di .net 3.5.
Michael Stimson
1

Ok, saya baru saja memverifikasi bahwa saya dapat melangkah melalui kode menggunakan proses ini. Saya melakukan ini di ArcMap, tapi saya pikir itu harus berlaku untuk ArcCatalog karena prosesnya berkaitan dengan debugging DLL dan bukan item spesifik ESRI. Saya mengkonfirmasi ini di kedua ArcMap 10.2.2 dan ArcCatalog 10.2.2. Karena ini adalah proses Windows yang berurusan dengan DLL secara langsung, versi perangkat lunak ESRI seharusnya tidak masalah.

Saya menggunakan Visual Studio untuk Melampirkan ke Proses .

Saya dapat melangkah melalui ekstensi terkompilasi (DLL) menggunakan proses ini ketika DLL dipanggil dalam program lain.

Inilah yang saya lakukan ...

Di Visual Studio, buka proyek ekstensi Anda. Saya membangun ekstensi saya di VS 2010 C # Express, tetapi saya menggunakan VS 2013 Ultimate untuk melakukan ini. Saya tidak yakin apakah Lampirkan ke Proses adalah opsi di versi Express 2010. Saya tidak melihatnya, tetapi itu bisa disembunyikan di suatu tempat karena itu adalah versi Express.

Buka produk ESRI Anda dan instal add-in. Sekarang, kembali ke VS, klik Lampirkan ke Proses dan pilih proses produk ESRI Anda. Milik saya adalah ArcMap.exe . Dari sini, Visual Studio harus melampirkan debugger-nya ke program dan ketika DLL dijalankan yang telah Anda buka dan breakpoint ditetapkan, program itu akan berhenti di sana. Ini akan bertindak seperti program lain yang Anda debug di Visual Studio. Ini mungkin meregangkan beberapa debugging ke beberapa item ESRI meskipun kode kemungkinan besar dikaburkan jadi tidak begitu berguna.

Saya memastikan saya menginstal add-in dari direktori Release saya untuk proyek saya. Sejauh yang saya tahu, ESRI tidak menyalin DLL ke salah satu foldernya, tetapi mereka menggunakan Utilitas Pendaftaran Majelis Esri untuk mendaftarkan lokasi DLL sehingga sistem tahu di mana menemukannya ketika direferensikan dari produk ESRI.

FYI: Saya menggunakan proses ini untuk men-debug perpustakaan kelas yang saya tulis di satu proyek yang sedang digunakan di yang lain. Teori yang sama di sana harus menerapkan add-in ESRI karena hanya perpustakaan kelas (DLL) yang dipanggil ke program lain. Selain dari Visual Studio, saya percaya Windows debugger lain harus dapat dilampirkan ke DLL.

HARAP posting komentar yang satu ini. Saya pikir ini akan bekerja untuk sementara waktu dan saya sangat ingin tahu bagaimana orang lain adil dengan metode ini.

EDIT Saya baru saja membuat add-in ArcCatalog baru, yang terdiri dari tombol sederhana. Saya menambahkan tugas string string stophere = "debugger stopped!";dalam event handler untuk acara klik tombol. Melalui ArcCatalog, berhenti menggunakan metode Lampirkan ke Proses . Info Visual Studio 2010 tentang prosesnya ada di sini .

Ada beberapa hal di MSDN tentang debugging DLL melalui berbagai metode di Visual Studio dan Windows Debugger. Saya pribadi menemukan Lampirkan ke Proses lebih baik daripada memulai metode program eksternal dan juga lebih baik daripada menggunakan debugger jarak jauh .

Satu-satunya downside ke metode ini adalah bahwa Anda kehilangan pendekatan F5 di mana Anda men-debug langsung dari dalam Visual Studio. Jadi itu berarti, buat perubahan pada kode Anda, instal pembaruan, mulai ArcCatalog, Lampirkan ke Proses, lalu tekan titik istirahat Anda. Namun, saya menemukan bahwa metode ini cukup bagus untuk diketahui jika Anda mengalami masalah seperti yang Anda miliki. Proses ini mungkin sedikit lebih lama, tetapi ini adalah metode yang pasti untuk mendapatkan hasil Anda.

Branco
sumber
Saya memiliki Visual Studio 2010 Professional , ada perbedaan besar antara ArcMap dan ArcCatalog seperti yang dinyatakan dalam pertanyaan ... ArcMap addins debug saya baik-baik saja. Ketika saya menulis ini sebagai COM (ArcGis 9.3.1) kode itu berfungsi dengan baik .... sebenarnya, memikirkan hal itu, saya harus memastikan bahwa ekstensi Esri yang sangat lama (9.3.1) juga hilang. Apa yang Anda katakan dalam komentar Anda tentang pengeditan ArcCatalog.exe.config, bisakah Anda menunjukkan kepada saya setengah lusin baris pertama. Coba buat tambahan ArcCatalog yang sangat sedikit (kotak pesan harus cukup) dan lihat apakah Anda dapat men-debug-nya.
Michael Stimson
@ MichaelMiles-Stimson ... apakah komentar itu dimaksudkan untuk jawaban ini? Juga, saya mengedit pertanyaan saya untuk menambahkan informasi lebih lanjut dan diuji dengan ArcCatalog. Metode saya berfungsi tetapi Anda tidak dapat F5 dari dalam Visual Studio, Anda perlu melakukan sedikit lebih banyak pekerjaan tetapi masih mencapai hasil yang sama tanpa harus berurusan dengan file konfigurasi.
Branco
Branco, terima kasih atas jawaban bijaksana Anda tetapi ternyata versi .NET framework yang menyebabkan masalah.
Michael Stimson
1

Ini adalah file yang saya buat selama beberapa tahun yang diperdebatkan dengan ekstensi ArcMap & ArcCatalog & kemudian Add-in:

Hal-hal yang dapat mencegah ArcMap dari debugging Add-in di Visual Studio:

  • Mode rilis daripada mode Debug (jika menggunakan pendekatan non-Add-in lama ini bisa menjadi masalah karena kemungkinan besar \ bin \ Debug dll terdaftar dengan regasm, bukan \ bin \ Release
  • Versi lama alat di UI mencegah dimuatnya versi debug (mulai ArcMap tanpa Visual Studio, hapus semua perintah & hapus semua peralatan tambahan, tutup ArcMap)
  • Apakah ada kemungkinan versi non-Add-in digunakan? Jika tidak, dll harus didaftarkan
  • Tidak perlu menginstal add-in untuk debugging secara manual
  • Bersihkan solusi & proyek, lalu lihat secara manual file aplikasi dan hapus semua / nampan dan / obj konten
  • Kosongkan konten C: \ Users \ <NAME> \ Local Settings \ ESRI \ Desktop10.0 \ AssemblyCache
  • Pastikan lokasi \ bin proyek proyek lain sebelumnya / mungkin direferensikan oleh ArcMap sementara debugging tidak memiliki dll dibangun / Add-in dengan nama yang sama dengan yang Anda coba debug (yaitu migrasi dot net / add-in versi bentrokan)
  • Di beberapa breakpoint Add-in hanya akan dapat hidup setelah tombol alat diklik - saat itulah diinisialisasi
  • Jika tidak ada breakpoint yang terkena sama sekali, ada kemungkinan pengecualian dilemparkan ke konstruktor dan alat tidak berjalan. Periksa ini dengan menampilkan semua pengecualian CLR melalui menu Debug -> Pengecualian -> centang 'Pengecualian Runtime Bahasa Umum'
  • Jika semuanya gagal, mulai ulang
Tomfumb
sumber
Terima kasih atas upaya tombumb, semua itu dialamatkan di pos tertaut .. Berend memiliki jawaban yang benar (kali ini) karena bukan salah satu tersangka yang biasa.
Michael Stimson
0

Ini solusinya:

Coba hapus SupportedRuntime dari arcmap.exe.config, di direktori bin.

Ini adalah file xml \ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config.

Mengapa breakpoint tidak menjadi "hit" saat men-debug Add-In ArcGIS 10?

Alireza
sumber
Saya mereferensikan pos itu dalam pertanyaan. Ini bukan tentang ArcMap, yang berfungsi dengan baik, itu adalah ArcCatalog yang menyebabkan masalah. Tapi usaha yang bagus. Saya pikir saya harus menawarkan hadiah untuk yang satu ini.
Michael Stimson
Hai @ MichaelMiles-Stimson Sudahkah Anda mencoba mengedit ArcCatalog.exe.config? Untuk addin terakhir yang saya kembangkan, saya membatalkan komentar ini <! - <didukungRuntime versi = "v4.0.30319" /> -> dan malah berkomentar ini <didukungRuntime versi = "v2.0.50727" />
rowanwins
Saya tidak dapat menemukan versi <didukungRuntime = "v2.0.50727" /> untuk mengomentari @rowanwins. Dengan asumsi saya memiliki cadangan dan ingin menghapus baris, apa yang ada di dalam kandang <startup>? Apakah ada alasan mengapa kalimat ini dikomentari?
Michael Stimson
Mungkin @rowanwin, Anda dapat memasukkannya sebagai jawaban, yang akan memungkinkan setidaknya satu cuplikan layar dari apa yang Anda coba ungkapkan dan berpotensi beberapa kata lagi dan saya akan menyelidikinya besok ... waktu rumah!
Michael Stimson
0

Beberapa langkah yang jelas (saya kira Anda sudah mencoba ini..tapi masih).

  1. Periksa apakah Mode ini masih "Debug" alih-alih rilis.
  2. Hapus folder "obj" dan "bin" dan bangun kembali.
Vinayan
sumber
Ya, lakukan itu. Itu disebutkan pada salah satu posting stack overflow. Itu harus menjadi sesuatu yang kurang jelas.
Michael Stimson