Opracowałem dodatek ArcMap, który wymaga pliku konfiguracyjnego. Po dłuższej chwili próbowania odczytania wartości konfiguracji z pojedynczego pliku App.Config (i zawsze uzyskanie wartości null) uważam, że dodatek nie może odczytać wartości stąd, ponieważ jest to biblioteka klas, i szuka aplikacji wywołującej (ArcMap) plik konfiguracyjny, gdy pytam o wartość klucza (stąd null).
Aby obejść ten problem, użyłem pliku App.Settings, który aplikacja może dobrze odczytać. Utworzenie tego również wprowadza do środowiska plik App.Config, a Visual Studio wydaje się utrzymywać synchronizację dwóch plików podczas programowania.
Teraz, gdy dodatek jest wdrażany, muszę mieć możliwość zmiany wartości konfiguracyjnych (np. Lokalizacji pliku dziennika). Próbowałem otworzyć / rozpakować plik .esriaddin i zaktualizować tam plik App.Config, ale dodatek zachowuje te same wartości konfiguracyjne, które miał podczas kompilacji. Wiem, że nowe wartości App.Config są zachowywane w pliku .esriaddin, ponieważ mogę je wyświetlić ponownie po zamknięciu archiwum.
Czy ktoś zna niezawodny sposób skonfigurowania dodatku i zezwala na aktualizację tej konfiguracji po wdrożeniu? Wszelkie sugestie są bardzo mile widziane, ponieważ wydaje się śmieszne, że potrzebuję do tego niestandardowego pliku konfiguracyjnego.
Wartości App.Settings są na poziomie aplikacji, a obecnie zarówno App.Settings, jak i App.Config mają działanie kompilacji: brak / nie kopiuj.
źródło
Pożyczając od podobnej odpowiedzi , możesz użyć tego w swoim dodatku:
źródło
this.GetType().Assembly.Location + ".config"
Standardowy plik konfiguracyjny .NET dotyczy aplikacji, a nie biblioteki. Oznacza to, że gdy dodatek działa w procesie ArcMap, ustawienia konfiguracji należy określić w ArcMap.exe.config, który należy umieścić oprócz ArcMap.exe.
Jest to oczywiście nie zawsze możliwe w środowisku produkcyjnym, a także narusza izolację dodatków, co jest jednym z powodów, dla których dodatki zostały wprowadzone w pierwszej kolejności.
Będziesz musiał zapisać swoje ustawienia inaczej, albo we własnym pliku konfiguracyjnym (jak wskazano w odpowiedzi Kirka), albo w rejestrze systemu.
Możesz monitorować zmiany w pliku konfiguracyjnym na różne sposoby, na przykład wykorzystując klasę FileSystemWatcher .
źródło
Odpowiedź Kirk Kuykendall nie działa dla mnie, ponieważ przechowywane wskazując samego .dll. Użyłem następujących do wskazania pliku konfiguracyjnego
źródło
Chociaż nie patrzyłem na nowy model dodatku ESRI, to, co zrobiłem i widziałem, że zrobili to inni, jest użytkownik UserHive w rejestrze. Następnie możesz mieć ekran w swoim dodatku, aby zaktualizować potencjalne wartości, których potrzebujesz.
Korzystanie z pliku App.config wymaga całkowitego zrestartowania aplikacji / rozszerzenia w celu odczytania nowych wartości; podczas gdy łatwiej jest robić aktualizacje w czasie rzeczywistym z rejestru.
źródło
Możesz spróbować zmodyfikować kopię pliku konfiguracyjnego znajdującego się w pamięci podręcznej zestawu dodatków . Uważam, że esriaddin jest rozszerzany tylko raz przez ArcGIS. Dlatego kolejne modyfikacje nie mogą być użyte (choć powinno zauważyć, że plik esriaddin jest nowszy niż jego pamięć podręczna).
Vista / 7: C: \ Users \\ AppData \ Local \ ESRI \ Desktop10.0 \ AssemblyCache
XP: C: \ Documents and Settings \\ Ustawienia lokalne \ Dane aplikacji \ ESRI \ Desktop10.0 \ AssemblyCache
źródło