Ошибка запуска приложения WPF / PRISM из кнопки надстройки ArcGIS для рабочего стола, невозможно загрузить модули - PullRequest
1 голос
/ 17 ноября 2011

Когда я попытался запустить приложение WPF, которое использует PRISM из надстройки для кнопок в ArcMap, событие OnClick заходит так же далеко, как инициализация и отображение Shell.xaml, но когда оно пытается загрузить модули и управления в регионах, я получаю эту ошибку:

Невозможно привести прозрачный прокси к типу 'InnerModuleInfoLoader'

Надстройка для кнопки имеет это для обработчика событий onclick:

      protected override void OnClick()
      {
          App app = new App();
          app.InitializeComponent();
          app.Run();
      }    

В App.xaml.cs затем запускается загрузчик OnStartUp:

      protected override void OnStartup(StartupEventArgs e)
      {
          base.OnStartup(e);
          Bootstrapper bootstrapper = new Bootstrapper();
          bootstrapper.Run();
      }    

Модули копируются в папку bin\Modules надстройки:

      protected override IModuleCatalog CreateModuleCatalog()
      {
          var moduleCatalog = new DirectoryModuleCatalog();
          moduleCatalog.ModulePath = @".\Modules";
          return moduleCatalog;
      }    

Метод загрузчика Run() доходит до инициализации и отображения оболочки:

      protected override void InitializeShell()
      {
          base.InitializeShell();  
          App.Current.MainWindow = (Window)this.Shell;
          App.Current.MainWindow.Show();
      }    

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

Я не эксперт по призме, просто пробую это в качестве прототипа для следующей версии, поэтому любая помощь будет оценена.

1 Ответ

1 голос
/ 03 декабря 2011

Наконец-то решена эта проблема. Сообщение об ошибке в основном сообщало мне, что оно не знает, что такое «InnerModuleInfoLoader», поэтому я попытался поместить DLL-файлы prism в папку bin вызывающего приложения (сторонняя надстройка для кнопок) и вуаля, она прошла через сообщение об ошибке. Мы надеялись, что нам не нужно было помещать библиотеки DLL в GAC или в стороннюю папку app / bin, но я предполагаю, что нам нужно будет либо поместить их в GAC, либо, возможно, установить путь в EnvironmentVariable для стороннего приложения, чтобы найди их.

...