我在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