我在MSVS 2015 Professional(russified)中开发了带有Unity的Prism 6视图切换模块化WPF MVVM应用程序。 System.TypeInitializationException消息“System.Windows.Application的类型初始值设定项引发异常”在我的应用程序启动时抛出。在App.config文件中添加了模块注册后,此异常开始引发。下面是我的应用解决方案的结构:当Prism 6 WPF应用程序启动时抛出System.TypeInitializationException
正如你所看到的解决方案主要有工程“FlowmeterConfiguration”和两个棱镜模块项目:授权和校准。 Prism模块项目的名称取决于其模块类的名称。授权项目有AuthorizationModule类:
namespace Authorization
{
[Module(ModuleName = "AuthorizationModule", OnDemand = false)]
public class AuthorizationModule : IModule
{
. . . . .
}
}
和校准项目有CalibrationModule类:
namespace Calibration
{
[Module(ModuleName = "CalibrationModule", OnDemand = false)]
public class CalibrationModule : IModule
{
. . . . .
}
}
下面是App.config文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<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>
</configuration>
下面是Bootstrepper类:
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.config和CreateModuleCatalog方法中删除了模块注册,则不会发生异常,并且应用程序将成功启动。如果我尝试通过代码注册模块(在Bootstrepper中),那么模块类型:授权和校准不被识别,并被标记为错误(在这种情况下Authorization.AuthrizationModule和Calibration.CalibrationModule也不会被识别)。但我必须注册我的模块!我做错了什么?请帮帮我。
Попробуюзалить。 –
在你的问题中标记答案作为解决方案,如果它帮助你的话 – galakt