Eu desenvolvi um complemento do ArcMap que requer um arquivo de configuração. Depois de passar um tempo tentando ler os valores de configuração de um único arquivo App.Config (e sempre ficando nulo), acredito que o Suplemento não pode ler valores daqui, pois é uma biblioteca de classes, e procura o aplicativo de chamada (ArcMap) é o arquivo de configuração quando solicito o valor de uma chave (daí o nulo).
Para contornar isso, usei um arquivo App.Settings, que o aplicativo pode ler bem. Criar isso também introduz um arquivo App.Config no ambiente e o Visual Studio parece manter os dois arquivos sincronizados durante o desenvolvimento.
Agora que o suplemento está sendo implantado, preciso alterar os valores de configuração (por exemplo, local do arquivo de log). Tentei abrir / extrair o arquivo .esriaddin e atualizar o arquivo App.Config lá, mas o suplemento mantém os mesmos valores de configuração que tinha quando compilado. Eu sei que os novos valores App.Config estão sendo mantidos no arquivo .esriaddin porque eu posso visualizá-los novamente após fechar o arquivo morto.
Alguém conhece uma maneira confiável de configurar um suplemento e permite que essa configuração seja atualizável após a implantação? Qualquer sugestão muito bem-vinda, pois parece ridículo que eu precise de um arquivo de configuração personalizado para isso.
Os valores de App.Settings estão no nível do aplicativo e, atualmente, App.Settings e App.Config têm ação de compilação: nenhum / não copia.
fonte
Tomando emprestado de uma resposta semelhante , você pode usar isso em seu suplemento:
fonte
this.GetType().Assembly.Location + ".config"
O arquivo de configuração padrão do .NET é por aplicativo, não por biblioteca. Isso significa que, quando seu suplemento é executado no processo do ArcMap, suas definições de configuração precisam ser especificadas no ArcMap.exe.config, que precisa ser colocado além do ArcMap.exe.
Obviamente, isso nem sempre é possível no ambiente de produção e também viola o isolamento de suplementos, que é um dos motivos pelos quais os suplementos foram introduzidos.
Você precisará armazenar suas configurações de maneira diferente, em seu próprio arquivo de configuração (como sugerido na resposta de Kirk) ou no registro do sistema.
Você pode monitorar as alterações no seu arquivo de configuração de várias maneiras, por exemplo, aproveitando a classe FileSystemWatcher .
fonte
A resposta de Kirk Kuykendall não funcionou para mim, pois continuava apontando para a própria DLL. Eu usei o seguinte para apontar para o arquivo de configuração
fonte
Embora eu não tenha olhado para o novo modelo do Add-in da ESRI, o que eu fiz e vi feito por outras pessoas é o usuário do UserHive no registro. Você pode ter uma tela em seu suplemento para atualizar a possibilidade dos valores necessários.
O uso de um arquivo App.config tende a exigir que você reinicie totalmente o aplicativo / extensão para ler novos valores; embora seja mais fácil fazer atualizações dinâmicas a partir do registro.
fonte
Você pode tentar modificar a cópia do arquivo de configuração localizado no cache do Conjunto de Suplementos . Acredito que o esriaddin só seja expandido uma vez pelo ArcGIS. Portanto, modificações subsequentes não podem ser usadas (embora você deva notar que o arquivo esriaddin é mais recente que seu cache).
Vista / 7: C: \ Usuários \\ AppData \ Local \ ESRI \ Desktop10.0 \ AssemblyCache
XP: C: \ Documents and Settings \\ Configurações locais \ Dados do aplicativo \ ESRI \ Desktop10.0 \ AssemblyCache
fonte