Я разработал надстройку ArcMap, для которой требуется файл конфигурации. Потратив некоторое время, пытаясь прочитать значения конфигурации из одного файла App.Config (и всегда получая значение NULL), я считаю, что надстройка не может читать значения отсюда, поскольку это библиотека классов, и ищет вызывающее приложение (ArcMap) Конфигурационный файл, когда я спрашиваю значение ключа (отсюда ноль).
Чтобы обойти это, я использовал файл App.Settings, который приложение может читать хорошо. Создание этого также вводит файл App.Config в среду, и Visual Studio поддерживает синхронизацию этих двух файлов во время разработки.
Теперь, когда надстройка развернута, мне нужно иметь возможность изменять значения конфигурации (например, местоположение файла журнала). Я попытался открыть / извлечь файл .esriaddin и обновить там файл App.Config, но надстройка сохраняет те же значения конфигурации, которые были при компиляции. Я знаю, что новые значения App.Config сохраняются в файле .esriaddin, потому что я могу просмотреть их снова после закрытия архива.
Кто-нибудь знает надежный способ настроить надстройку и разрешить обновление этой конфигурации после развертывания? Любые предложения очень приветствуются, так как кажется смешным, что для этого мне нужен специальный файл конфигурации.
Значения App.Settings находятся на уровне приложения, и в настоящее время и App.Settings, и App.Config имеют действие сборки: нет / не копировать.
источник
Заимствуя из аналогичного ответа , вы можете использовать это в своем дополнении:
источник
this.GetType().Assembly.Location + ".config"
Стандартный файл конфигурации .NET для каждого приложения, а не для библиотеки. Это означает, что когда ваш плагин работает в процессе ArcMap, ваши параметры конфигурации должны быть указаны в ArcMap.exe.config, который должен быть размещен помимо ArcMap.exe.
Это, конечно, не всегда возможно в производственной среде, а также нарушает изоляцию надстроек, что является одной из причин, по которым надстройки были введены в первую очередь.
Вам нужно будет сохранить ваши настройки по-другому, либо в вашем собственном конфигурационном файле (как подсказано в ответе Кирка), либо в системном реестре.
Вы можете отслеживать изменения в вашем конфигурационном файле различными способами, например, используя класс FileSystemWatcher .
источник
Ответ Кирк Kuykendall не работал для меня, так как она все указывает на саму .dll. Я использовал следующее, чтобы указать на файл конфигурации
источник
Хотя я не смотрел на новую модель для ESRI Addin, то, что я сделал и увидел, что другие сделали, это пользователь UserHive в реестре. После этого вы можете иметь экран в своем дополнении, чтобы обновить список необходимых вам значений.
Использование файла App.config обычно требует полной перезагрузки приложения / расширения для чтения новых значений; в то время как легче делать обновления на лету из реестра.
источник
Вы можете попытаться изменить копию файла конфигурации, расположенного в кэше сборки надстройки . Я считаю, что эсриаддин расширяется только один раз ArcGIS. Поэтому последующие модификации не могут быть использованы (хотя следует заметить, что файл esriaddin новее, чем его кэш).
Vista / 7: C: \ Users \\ AppData \ Local \ ESRI \ Desktop10.0 \ AssemblyCache
XP: C: \ Documents and Settings \\ Локальные настройки \ Данные приложения \ ESRI \ Desktop10.0 \ AssemblyCache
источник