2011-11-16 42 views
1

当我尝试从ArcMap中的按钮加载项运行使用PRISM的WPF应用程序时,OnClick事件与初始化一样远和显示Shell.xaml但是当它试图加载模块和控制的地区,我得到这个错误:从ArcGIS桌面插件按钮运行WPF/PRISM应用程序时出错,无法加载模块

Unable to cast transparent proxy to type '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(); 
     }  

但是,在试图将模块和控件加载到区域的部分s,我得到那个错误。 WPF应用程序本身运行良好,但是当按钮运行它时,它不会完成。

我不是棱镜专家,只是试图将其作为下一个版本的原型,所以任何帮助将不胜感激。

回答

1

最后解决了这个问题。错误信息基本上告诉我它不知道“InnerModuleInfoLoader”是什么,所以我试着将棱镜DLL放在调用应用程序的bin文件夹中(第三方按钮加载项),并且瞧,它通过了错误信息。我们希望我们不必将DLL放入GAC或第三方应用程序/ bin文件夹中,但我想我们必须将它们放置在GAC中,或者可以将第三方应用程序的EnvironmentVariable中的路径设置为找到他们。

+0

感谢您分享您的解决方案:) – Anne

相关问题