Надстройка для MapPoint работает на некоторых машинах и не работает на некоторых других

Я разработал минимальную (без библиотеки объектов MapPoint, потому что это тест) надстройку для Microsoft MapPoint с использованием Visual Studio 2010, написанную на C#.

С помощью проекта установки я могу установить свою надстройку на некоторые компьютеры, на которых работает MapPoint 2010 или 2011, но на некоторых других установка не действует.

То есть вроде успешно завершается, но когда я открываю MapPoint, надстройка не запускается; если я открою "Инструменты" > "Надстройки COM"... Я обнаружу, что моя надстройка не отмечена флажком, ее проверка не имеет никакого эффекта, а добавление ее вручную сообщает мне

«C:\Path\to\myAddin.dll» не является допустимой надстройкой Office.

Проведя несколько тестов, я обнаружил, что проблема не связана с определенной версией MapPoint, версией Windows или версией платформы.

Какие могут быть различия, из-за которых надстройка работает на одних машинах и не работает на других? Спасибо!


Подробнее о том, как я создал надстройку:

  • установить MapPoint 2011 Европа
  • запустить визуальную студию 2010
  • Файл> Создать> Проект...> Общая надстройка> дать имя проекту> ОК> отметьте только Microsoft MapPoint> перейти к концу
  • Проводник решений> откройте Connect.cs и напишите код
  • собрать все проекты в решении (с отключенным MapPoint)
  • используйте .msi, сгенерированный проектом установки, для установки надстройки на целевом компьютере (где MapPoint уже установлен)

person bluish    schedule 12.07.2012    source источник


Ответы (2)


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

Вы не должны обращаться к MapPointControl при создании надстройки. Вы получаете доступ только к объектной модели. За исключением любых различий API, если вы ссылаетесь на 2006 или более позднюю версию, она должна работать со всеми последующими версиями. Т.е. Ваша встроенная надстройка 2010 года должна работать с 2011 годом.

Ошибка недопустимой надстройки Office тупая, но на самом деле это вызвано прокладкой, которая находится между MapPoint и вашей надстройкой .NET. Прокладка делает вашу .NET DLL похожей на надстройку COM.

person winwaed    schedule 13.07.2012
comment
+1 Спасибо за вашу помощь, но теперь я изменил свой вопрос, потому что мои тесты показывают, что дело не в версии MapPoint, поэтому ваш ответ не по теме... :( Я также нашел решение, и я опубликую это сейчас. Я нашел это благодаря одной из ваших надстроек (!), MPSuperShape, просматривая библиотеки DLL он включает. Большое спасибо еще раз! - person bluish; 18.07.2012

После нескольких часов тестов я нашел его! Благодаря исследованию папки установки MPSuperShape :).

Требуется Extensibility.dll в той же папке, где установлена ​​моя надстройка. При создании общего проекта надстройки в VS Extensibility автоматически добавляется в References, но не в список файлов, которые установщик поместит в папку программы.

Следовательно, вам необходимо: щелкнуть правой кнопкой мыши автоматически сгенерированный проект установки > Добавить > Сборка... > .NET > Расширяемость > ОК. Соберите, установите и готово!

Я добавлю, что если вы используете библиотеку объектов MapPoint (как вы, вероятно, делаете, если это не тестовая надстройка, такая как моя), вам нужно добавить Interop.MapPoint.dll аналогичным образом: щелкните правой кнопкой мыши автоматически сгенерированный проект установки > Добавить > Сборка... > Обзор > выбрать такую ​​DLL из папки bin\Debug или obj\Debug в основном проекте.

Почему Extensibility.dll не нужен на некоторых машинах?

Потому что если у вас Microsoft Office 2007 или новее (как я видел) он уже присутствует (в C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\PublicAssemblies) и каким-то образом загружается при запуске MapPoint.

person bluish    schedule 18.07.2012