Запустите приложение ArcGIS 10.1 на 10.2

10

Я поддерживаю приложение .NET, которое было скомпилировано на ПК с установленной ArcGIS 10.1. Приложение содержит пользовательский интерфейс и расширение рабочего стола ArcGIS, а также сборку установщика, которая вызывается установщиком Windows для регистрации расширения рабочего стола во время установки.

У меня проблема в том, что приложение не будет работать на ПК с ArcGIS 10.2, потому что сборки ESRI 10.1 не найдены, поэтому происходит сбой. Похоже, что начиная с версии 9.3 ESRI больше не предоставляет файлы политик издателя для перенаправления программы во время выполнения к последним версиям.

Мне удалось перенаправить программу для загрузки сборок 10.2, добавив привязку сборки во время выполнения в .exe.config приложения. Однако это не перенаправляет расширение рабочего стола и не решит проблему с установщиком, ищущим библиотеки 10.1 при установке приложения.

Решение ESRI состоит в том, чтобы перекомпилировать приложение каждый раз, когда выпускается новая версия ArcGIS. Однако это означает, что мне потребуется копия каждой версии ArcGIS, которую используют конечные пользователи. И мне придется удалять и переустанавливать разные версии каждый раз, когда мне нужно изменить код приложения, чтобы перекомпилировать его.

У кого-нибудь есть предложения? Могут ли библиотеки загружаться динамически во время выполнения, чтобы избежать поиска конкретной версии? Есть ли другое решение?

Энди
источник

Ответы:

2

Установите ссылки ArcGIS в вашем проекте, чтобы использовать следующие свойства:

Copy Local = False
Specific Version = False

В большинстве случаев это сделает вашу программу совместимой с пересылкой, если вы не используете arcobjects, которые устарели или имеют критические изменения.

Rich Wawrzonek
источник
У меня уже есть эти настройки в Visual Studio. «Specific Version = False» влияет только на то, как Visual Studio загружает ссылки, а не после того, как приложение создано и развернуто.
Энди
2

Возможно, вам лучше изменить архитектуру вашего проекта на 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 для следующих интерфейсов:

  • IDocumentEvents
  • IGxDocumentEvents
  • IGMxDocumentEvents
  • ISxDocumentEvents

Что касается удалений, единственные удаления в 10.2 были :

  • MaplexUI
    • MaplexExtension
    • MaplexExtensionClass

В остальные изменения были добавлены функциональные возможности.

Чтобы ответить на ваш вопрос в комментариях ниже, да, это должно гарантировать, что вам не придется компилировать для разных версий Arc (до тех пор, пока вы остаетесь в 10.x). Когда они переходят на 11, это может быть другая история. Что касается поддержки MapInfo, я не знаком с этим.

GeoSharp
источник
Спасибо за предложение, но у меня есть две мысли: 1. Гарантирует ли это решение проблемы версий DLL, или надстройку все равно придется перекомпилировать для каждой версии ArcGIS? Проблема не в установщике или реестре - проблема в том, что ESRI больше не предоставляет файлы политики издателя с новыми выпусками. 2. Мое приложение предназначено не только для ArcGIS, оно также работает с MapInfo. Таким образом, основная часть приложения представляет собой автономный интерфейс, и только небольшая часть кода относится к ArcGIS или MapInfo.
Энди
Энди видит дополнения к моему ответу, чтобы решить ваши проблемы.
GeoSharp