ESRI ArcMap Bổ trợ Cấu hình.esriaddinx


8

Tôi đang trong quá trình chuyển đổi một phần mở rộng ArcMap cũ hơn thành một Bổ trợ trong C # và tôi đang cố gắng tận dụng tốt nhất cấu hình dựa trên XML.

Config.esriaddinx hoạt động tuyệt vời cho thiết lập cơ bản (thanh công cụ, nút, thông tin mở rộng, v.v.), nhưng có cách nào để thêm các tham số cấu hình khác, chẳng hạn như tên trường, tên lớp, kết nối cơ sở dữ liệu, v.v.?

Tôi có cần tạo tệp App.config không? Nếu vậy, tệp App.config vẫn được đóng gói / triển khai giống như phần còn lại của bổ trợ chứ? Điều gì sẽ là phương pháp tốt nhất để đọc các tham số? Tôi là người mới sử dụng bổ trợ và mọi đề xuất hoặc mẫu sẽ được đánh giá rất cao. Cảm ơn!

Câu trả lời:


4

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ừ Settingslớ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ụngConfigurationManager.

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.LoadFromvà 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 SerializableAttributecác lớp hoặc các lớp được đánh dấu được triển khai IXmlSerializablecho 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 XMLCá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).


Thông tin tuyệt vời ở đây, @ blah238! Tôi sẽ trưng bày các tùy chọn này và xem cái gì sẽ hoạt động tốt nhất.
petegis

Làm thế nào để bạn triển khai tệp xml vào thư mục Môi trường. SpecialFolder.ApplicationData khi bạn phân phối tệp addin cho người dùng của mình? Đây có phải là một trường hợp sao chép / dán thủ công các tập tin?
Vidar

1

Tạo một tệp config.xml và đặt hành động xây dựng của nó thành AddInContent dưới các thuộc tính VS cho tệp.

Để thêm vào điều này dựa trên nhận xét, vì bạn đang thực hiện nó trong C # Tôi đã giả sử rằng bạn đang sử dụng Visual Studio để tạo ra addin của mình. Từ đó, nếu bạn thêm một tệp cấu hình XML từ tùy chọn mới của tệp và đặt tên là tệp config.xml, nó sẽ tạo một tệp trống mặc định. Từ đó, bạn có thể chỉ định cài đặt xml giá trị khóa trong thẻ appSinstall giống như tệp cấu hình xml thông thường và sau đó tham khảo các cài đặt này từ mã như bình thường. Để thay đổi hành động xây dựng, khi bạn có tệp được chọn trong VS, hãy nhìn vào cửa sổ thuộc tính và cần có cài đặt hành động xây dựng. Chọn cái này và nó sẽ hiển thị thả xuống các tùy chọn có sẵn, chọn AddInContent từ danh sách.


1
Chào mừng bạn đến với GISse. Đây là một câu trả lời rất ngắn gọn. Nó sẽ giúp bao gồm một số chi tiết hơn, có lẽ kết hợp một số chi tiết mà @petegis đã đề cập, như cách thêm các tham số cụ thể vào tệp này. Ngoài ra, làm thế nào bạn sẽ đi về việc tạo tập tin này? Nó được thực hiện thông qua ArcMap, hoặc trong một trình soạn thảo văn bản? Cấu trúc phù hợp là gì? Hãy suy nghĩ về việc nếu bạn chưa bao giờ tạo ra nó trước đây, bạn cần biết những gì để thành công. Đó là loại thông tin sẽ làm cho một câu trả lời tuyệt vời. Khởi đầu tốt!
Nhận không gian

Cảm ơn @davetimmins. Có vẻ đủ đơn giản, tôi đã chụp ảnh này và nó hoạt động miễn là tệp không thực sự được đặt tên là "config.xml" (ném lỗi xây dựng "Không thể tạo tệp khi tệp đó đã tồn tại").
petegis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.