Я поддерживаю приложение .NET, которое было скомпилировано на ПК с установленной ArcGIS 10.1. Приложение содержит пользовательский интерфейс и расширение рабочего стола ArcGIS, а также сборку установщика, которая вызывается установщиком Windows для регистрации расширения рабочего стола во время установки.
У меня проблема в том, что приложение не будет работать на ПК с ArcGIS 10.2, потому что сборки ESRI 10.1 не найдены, поэтому происходит сбой. Похоже, что начиная с версии 9.3 ESRI больше не предоставляет файлы политик издателя для перенаправления программы во время выполнения к последним версиям.
Мне удалось перенаправить программу для загрузки сборок 10.2, добавив привязку сборки во время выполнения в .exe.config приложения. Однако это не перенаправляет расширение рабочего стола и не решит проблему с установщиком, ищущим библиотеки 10.1 при установке приложения.
Решение ESRI состоит в том, чтобы перекомпилировать приложение каждый раз, когда выпускается новая версия ArcGIS. Однако это означает, что мне потребуется копия каждой версии ArcGIS, которую используют конечные пользователи. И мне придется удалять и переустанавливать разные версии каждый раз, когда мне нужно изменить код приложения, чтобы перекомпилировать его.
У кого-нибудь есть предложения? Могут ли библиотеки загружаться динамически во время выполнения, чтобы избежать поиска конкретной версии? Есть ли другое решение?
Возможно, вам лучше изменить архитектуру вашего проекта на ESRI Add-In. Таким образом вы избежите работы с установщиком Windows, который, если я правильно понимаю, ваша архитектура имеет дело с реестром Windows.
Надстройки намного проще, они не требуют специальных установщиков Windows, они просто поставляются в виде специального ZIP-файла с типом файла .esriAddIn и рекомендуются ESRI. Они не имеют дело с реестром Windows, только ESRI и устанавливаются одним нажатием файла. Они должны лучше применять изменения, предложенные Ричем Вавзонеком.
Кроме того, ESRI заявил ( см. Презентацию здесь ), что в основных версиях, например, надстройки 10.x обратно совместимы, т.е. 10.2 могут использовать надстройки 10.1 и 10.0, 10.1 может использовать надстройки 10.0. С оговоркой, что вы должны знать, были ли вещи удалены или изменены в ArcObjects при переходе.
Например, сигнатура метода для метода OnContextMenu была изменена в 10.2 для следующих интерфейсов:
Что касается удалений, единственные удаления в 10.2 были :
В остальные изменения были добавлены функциональные возможности.
Чтобы ответить на ваш вопрос в комментариях ниже, да, это должно гарантировать, что вам не придется компилировать для разных версий Arc (до тех пор, пока вы остаетесь в 10.x). Когда они переходят на 11, это может быть другая история. Что касается поддержки MapInfo, я не знаком с этим.
источник