首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当Prism 6 WPF应用程序启动时,Prism.Wpf.dll中的'Prism.Modularity.ModuleTypeLoadingException‘被抛出

当Prism 6 WPF应用程序启动时,Prism.Wpf.dll中的'Prism.Modularity.ModuleTypeLoadingException‘被抛出
EN

Stack Overflow用户
提问于 2016-02-20 18:54:24
回答 3查看 2.2K关注 0票数 1

当我使用Unity的Prism6WPF模块化应用程序启动时,Prism.Wpf.dll中的"Prism.Modularity.ModuleTypeLoadingException“被抛出。下面是异常的屏幕截图:

正如您所看到的,当调用Bootstrepper.Run方法时会抛出异常。以下是Botstrapper的代码:

代码语言:javascript
复制
namespace FlowmeterConfigurator
{
    class Bootstrapper : UnityBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            return Container.Resolve<MainWindow>();
        }

        protected override void InitializeShell()
        {
            Application.Current.MainWindow.Show();
        }

        protected override IModuleCatalog CreateModuleCatalog()
        {
            return new ConfigurationModuleCatalog();
        }
    }
}

我的应用程序解决方案由三个项目组成:使用Prism Template Pack作为Prism Unity App创建的主WPF项目和两个模块,每个模块都是使用Prism Template Pack作为Prism模块创建的。这两个模块都是在App.config文件中注册的,如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
   <configuration>
      <configSections>
          <section name="modules" type="Prism.Modularity.ModulesConfigurationSection, Prism.Wpf"/>
      </configSections>
      <modules>
          <module assemblyFile="Authorization.dll" moduleType="Authorization.AuthorizationModule, Authorization, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="AuthorizationModule" startupLoaded="true" />
          <module assemblyFile="Calibration.dll" moduleType="Calibration.CalibrationModule, Calibration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="CalibrationModule" startupLoaded="true" />
      </modules>
      <startup>
          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
      </startup>
   </configuration>

第一个模块称为授权,它的类被称为AuthorizationModule:

代码语言:javascript
复制
namespace Authorization
{
    [Module(ModuleName = "AuthorizationModule", OnDemand = false)]
    public class AuthorizationModule : IModule
    {
       . . . . .
    }
} 

第二个模块称为校准,其类称为CalibrationModule:

代码语言:javascript
复制
namespace Calibration
{
    [Module(ModuleName = "CalibrationModule", OnDemand = false)]
    public class CalibrationModule : IModule
    {
       . . . . .
    }
}

当我的应用程序启动时,MainWindow会显示很短的时间(不到1秒),在这个很短的时间间隔之后,会抛出与CalibrationModule相关的ModuleTypeLoadingException。看起来AuthorizationModule的类型已成功加载,但CalibrationModule的类型加载失败。请帮我消除这个错误。

附注:我还没有在我的应用程序中定义任何IModuleManager实例。也许我必须在我的应用程序中的某个地方定义它?

EN

回答 3

Stack Overflow用户

发布于 2016-02-20 21:01:11

异常说棱镜找不到.dll文件。你的.exe文件和模块的.dll文件应该在同一个文件夹中(根据上一个问题中的app.config );

票数 0
EN

Stack Overflow用户

发布于 2016-12-16 06:07:37

异常说棱镜找不到.dll文件。如果解决方案的不同项目不是使用相同的目标框架版本构建的,则可能找不到这些项目。当模块项目是在.Net框架4.5.2中构建的,而主项目在4.5.1中时,我遇到了这个错误。更正/对齐目标框架版本,退出Visual Studio,重新输入,重新生成。然后错误就消失了。

大多数情况下,出现异常的原因有很多。

票数 0
EN

Stack Overflow用户

发布于 2018-06-25 20:48:10

.exe和.dll应该在同一个文件夹中,以避免此异常,可通过以下两种方式实现

1)转到模块项目属性->生成事件->Post生成事件命令行并粘贴以下代码

代码语言:javascript
复制
copy "$(TargetPath)" "$(SolutionDir)MainWPFProject\bin\$(ConfigurationName)"

上面代码中的MainWPFProject表示包含App.config文件的项目。

2)手动复制依赖模块.dll

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35522206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档