当使用Unity的Prism 6 WPF模块化应用程序启动时,Prism.Wpf.dll中的“Prism.Modularity.ModuleTypeLoadingException”被抛出。下面是异常的屏幕截图:当Prism 6 WPF应用程序启动时,Prism.Wpf.dll中出现'Prism.Modularity.ModuleTypeLoadingException'
正如你可以看到当Bootstrepper.Run方法被称为异常抛出。下面是Botstrapper的代码:
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();
}
}
}
我的应用程序的解决方案包括三个项目:与棱镜模板包创建为棱镜团结App和两个模块,每一个都与棱镜模板包创建为主要WPF项目棱镜模块。这两个模块都登记在App.config文件,请参阅以下内容:
<?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>
第一个模块被称为授权和它的类caled AuthorizationModule:
namespace Authorization
{
[Module(ModuleName = "AuthorizationModule", OnDemand = false)]
public class AuthorizationModule : IModule
{
. . . . .
}
}
第二模块称为校准和它的类被称为CalibrationModule:
namespace Calibration
{
[Module(ModuleName = "CalibrationModule", OnDemand = false)]
public class CalibrationModule : IModule
{
. . . . .
}
}
当开始然后主窗口被显示为短的时间我的应用程序(小于1秒)并且该S后Hort时间间隔ModuleTypeLoadingException引发与CalibrationModule相关的错误。看起来像AuthorizationModule的类型被成功载入,但CalibrationModule类型的载入失败。请帮我解决这个错误。
P.S.我没有在我的应用程序中定义IModuleManager的任何实例。可能是我必须在我的应用程序的某个地方定义它?
有了这些信息,真的很难猜到发生了什么。我建议你比较配置文件中的名字和你试图链接的dll。 – Fka
你的dll和exe文件在同一个文件夹中吗? – galakt
在D:\ My_C#_Projects \ FlowmeterConfiguration_Unity \ FlowmeterConfigurator \ FlowmeterConfigurator \ bin \ Debug文件夹中有FlowmeterConfiguration.exe和Microsoft和Prism的dll文件。 –