Pertama, saya belum mencoba menggunakan Config.esriaddinx untuk tujuan ini, tetapi saya tidak akan merekomendasikannya. Ini dimaksudkan untuk konfigurasi add-in itu sendiri, belum tentu data pengguna, dan Anda mungkin tidak ingin mencampur keduanya.
Sudah lama sejak saya sudah berurusan dengan ini sendiri jadi saya mungkin sedikit kabur pada detail, tetapi ada beberapa masalah dengan menggunakan file konfigurasi di ArcGIS add-in: ArcMap Add-in dengan app.settings tidak mengenali aplikasi perubahan .config?
Secara khusus, direktori add-in yang diekstraksi akan ditimpa setiap kali aplikasi dimulai, sehingga Anda tidak dapat benar-benar bertahan terhadap perubahan pada pengaturan di sana. Jika pengaturan Anda tidak pernah berubah atau hanya berubah dengan setiap versi baru add-in Anda, maka ini mungkin bukan masalah.
Namun, jika Anda ingin membuat add-in Anda dapat dikonfigurasi oleh pengguna akhir maka Anda perlu menyimpan informasi yang dapat dikonfigurasi pengguna di tempat lain sehingga mereka tidak ditimpa. Saya sarankan menggunakan folder Data Aplikasi pengguna , yang jalurnya dapat Anda tentukan secara terprogram seperti:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Saya juga menyarankan untuk meletakkannya di subfolder yang dinamai add-in Anda. Tetapi pada dasarnya Anda akan memuat dari dan menyimpan ke file di lokasi itu alih-alih membaca pengaturan dari kelas add-in Anda Settings
atau file konfigurasi di direktori add-in. Jika Anda ingin menggunakan konfigurasi .NET untuk ini maka saya sarankan membaca di Pengaturan Aplikasi dan ConfigurationManager
.
Masalah lain yang saya miliki adalah dengan menggunakan bagian konfigurasi khusus saat menggunakan konfigurasi .NET. Menggunakan Assembly.LoadFrom
dan menanganiAssemblyResolve
acara adalah solusi untuk masalah khusus itu, meskipun dalam kasus itu saya akhirnya tidak menggunakan konfigurasi .NET untuk itu dan alasan lain.
Bergantung pada kompleksitas skenario konfigurasi Anda, Anda dapat, seperti yang saya lakukan, menghindari menggunakan sistem konfigurasi .NET sepenuhnya dan sebagai gantinya menggunakan beberapa metode lain membaca dan menulis informasi konfigurasi. Saya akhirnya menggunakan SerializableAttribute
kelas-kelas atau kelas-kelas yang diimplementasikan IXmlSerializable
untuk tujuan ini di salah satu add-in yang lebih kompleks yang saya buat yang mencakup pengaturan yang dapat dikonfigurasi pengguna seperti daftar lapisan, pengaturan koneksi, dll. Saya akan merekomendasikan membaca Serialisasi Objek di. NET , Memperkenalkan Serialisasi XML dan Bagaimana Menerapkan IXmlSerializable dengan Benar jika Anda tertarik pada pendekatan itu.
Kedengarannya seperti milik Anda adalah sepanjang baris yang sama sehingga terserah Anda, tetapi saya menemukan pendekatan serialisasi XML lebih disukai untuk konfigurasi NET untuk semua kecuali skenario konfigurasi yang paling sederhana (tipe data sederhana, tidak ada hierarki / koleksi).