В одном из наших проектах мы используем Bing Maps Silverlight контрол. Он позволяет нам использовать все фичи Bing Maps в нашем проекте. Проект наш связан с отображением объектов на карте США, в различных городах и штатах. Одной из самых интересных фич у Бинга является особенные режимы просмотра карт, таких режимов нет ни у кого из аналогичных сервисов (например, Google Maps) - и эти режимы называются Bird's eye mode и Streetside view. Последний режим - это аналог гугловского режима просмотра карт, когда человек как бы ходит по улицам, а вот Bird's eye - по-настоящему уникальный режим просмотра карты, когда вы смотрите на здания не перпендикулярно земле, а как бы под наклоном - получается очень здорово. К сожалению, этот режим работает в США и я не уверен, что у Майкрософта есть картинки наших городов.
Но когда мы начали использовать режим Bird's eye (Bird's eye переводится примерно как "глаза птицы" - вы как бы смотрите на город из глаз птицы) мы неожиданно столкнулись с одной проблемой. Режим Bird's eye является неким расширением, дополнением к основным режимам просмотра и расположен он в SDK Bing Maps Silverlight Control Extended Modes Beta v0.5.0.0. В названии SDK вы можете увидеть ключевое слово "Beta", что уже настораживает. И в нашем проекте мы столкнулись с проблемой, которая известна каждому девелоперу, который разрабатывает проекты на основе контрола от Бинг для Silverlight версии 4. Я говорю про внезапно возникающее исключение - "System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeLoadException: Could not load type 'Microsoft.Maps.Plugins.ConfigurationService' from assembly 'Microsoft.Maps.Plugins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c70bd40282823787'." Когда мы в проекте подключаем режим Bird's eye мы начали "ловить" необъяснимый exception и после этого приложение переставало работать. В тоже время без этих особых режимов приложение работало стабильно. Таким образом, мы решили, что проблема кроется в этих особых режимах, а точнее в ДЛЛках, связанных с этими режимами. В то время я попытался найти решение проблемы и даже нашел его для Silverlight 3 (вот мои посты по этой теме), но при переходе на Silverlight версии 4 приложение по прежнему рушилось, когда мы подключали эти режимы. Мы отключили эти режимы из нашего проекта, но спустя несколько месяцев неожиданно режим Bird's eye внезапно начал работать! Но вчера, опять же так же неожиданно, я стал получать точно такую же ошибку. И это были по-настоящему плохие новости, так как заказчику режим Bird's eye очень нравился. Поэтому надо было срочно искать решение. К счастью, я решил поискать решение в Интернет и наткнулся на тот же топик, в котором я уже оставлял сообщения по этой проблеме. Я хотел бы поблагодарить юзера с ником Jeff S - огромное спасибо что натолкнул на идею! Я запустил Fiddler (это такая программа - "must have" для любого уважающего себя девелопера) и решил посмотреть, делает ли какие нибудь запросы контрол и ДЛЛки режима Bird's eye. Я запустил проект, открыл ту страничку, на которой расположен контрол от Бинга, подключил Bird's eye и... Увидел стрнанный запрос, идущий на http://dev.virtualearth.net/webservices/v1/MapControlConfigurationService/MapControlConfigurationService.svc/binaryHttp. В теле ответа (спасибо Фиддлеру) я увидел очень интересную штуку - там был адрес дополнительного XAP-файла, судя по всему, он автоматически подгружается режимом Bird's eye! Я загрузил этот файл на компьютер, распаковал и посмотрел, что же находится внутри этого файла. И что же я нашел там - в этом файле располагаются 3 дополнительные ДЛЛки - Microsoft.Maps.Plugins.dll, Microsoft.Maps.PluginContainer.dll и Microsoft.Maps.Plugins.Internal.dll. Я простодобавил их в проект как Reference и...вуаля! Программа заработала без единой ошибки! Замечательно, таким образов в качестве решения этой проблемы я могу порекомендовать добавить три ДЛЛки в ваш Silverlight проект, использующий режим Bird's eye.
Я выложил архив с этими ДЛЛками к нам на сайт - пользуйтесь на здоровье!
Разработчик программного обеспечения компания Exonya предлагает вам IT решения, способныe удовлетворить требования вашего бизнеса, решения, основанные на современных технологиях. Современная IT индустрия развивается стремительными темпами и нам, как компании разработчику программного обеспечения, необходимо постоянно держать руку на пульсе современных технологий. Это позволяет нам производить современное и надежное программное обеспечение для наших заказчиков. Это могут быть решения, ориентированные на вэб и Интернет, это могут быть desktop-решения а также полнофункциональные Интернет-приложения типа Rich Internet Applications (RIA)

