Trước hết, tôi chưa thử sử dụng Config.esriaddinx cho mục đích này, nhưng tôi không khuyến nghị điều đó. Nó có nghĩa là cho cấu hình của chính bổ trợ, không nhất thiết là dữ liệu người dùng và có lẽ bạn không muốn trộn lẫn cả hai.
Đã được một thời gian kể từ khi tôi tự xử lý vấn đề này nên tôi có thể hơi mơ hồ về các chi tiết, nhưng có nhiều vấn đề với việc sử dụng tệp cấu hình trong bổ trợ ArcGIS: Bổ trợ ArcMap với ứng dụng không nhận ra ứng dụng .config thay đổi?
Cụ thể, thư mục bổ trợ được trích xuất bị ghi đè mỗi khi ứng dụng được khởi động, do đó bạn không thể thực sự thay đổi các cài đặt ở đó. Nếu cài đặt của bạn không bao giờ thay đổi hoặc chỉ thay đổi với mỗi phiên bản bổ trợ mới thì đây có lẽ không phải là vấn đề đáng lo ngại.
Tuy nhiên, nếu bạn muốn người dùng cuối có thể định cấu hình bổ trợ của mình thì bạn cần lưu trữ thông tin có thể định cấu hình người dùng ở nơi khác để họ không bị ghi đè. Tôi sẽ đề nghị sử dụng thư mục Dữ liệu ứng dụng của người dùng , có đường dẫn mà bạn có thể xác định theo chương trình như vậy:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Tôi cũng đề nghị đặt nó trong thư mục con được đặt tên theo bổ trợ của bạn. Nhưng về cơ bản, bạn sẽ tải và lưu vào một tệp ở vị trí đó thay vì đọc cài đặt từ Settings
lớp bổ trợ hoặc tệp cấu hình trong thư mục của bổ trợ. Nếu bạn muốn sử dụng cấu hình .NET cho việc này thì tôi khuyên bạn nên đọc trên Cài đặt ứng dụng và ConfigurationManager
.
Vấn đề khác tôi gặp phải là sử dụng các phần cấu hình tùy chỉnh khi sử dụng cấu hình .NET. Sử dụng Assembly.LoadFrom
và xử lýAssemblyResolve
sự kiện là giải pháp cho vấn đề cụ thể đó, mặc dù trong trường hợp đó tôi đã không sử dụng cấu hình .NET vì lý do đó và các lý do khác.
Tùy thuộc vào mức độ phức tạp của kịch bản cấu hình của bạn, như tôi đã làm, tránh sử dụng hoàn toàn hệ thống cấu hình .NET và thay vào đó sử dụng một số phương pháp đọc và ghi thông tin cấu hình khác. Tôi đã kết thúc bằng cách sử dụng SerializableAttribute
các lớp hoặc các lớp được đánh dấu được triển khai IXmlSerializable
cho mục đích này trong một trong những bổ trợ phức tạp hơn mà tôi đã tạo bao gồm các cài đặt có thể định cấu hình người dùng như danh sách các lớp, cài đặt kết nối, v.v. Tôi sẽ khuyên bạn nên đọc Nối tiếp đối tượng. NET , Giới thiệu Tuần tự hóa XML và Cách triển khai IXmlSerializable Đúng nếu bạn quan tâm đến phương pháp đó.
Nghe có vẻ như của bạn nằm dọc theo cùng một dòng nên tùy thuộc vào bạn, nhưng tôi thấy cách tiếp cận tuần tự hóa XML thích hợp hơn với cấu hình .NET cho tất cả các kịch bản cấu hình đơn giản nhất (kiểu dữ liệu đơn giản, không phân cấp / bộ sưu tập).