2016-02-19 37 views
0

我在MSVS 2015 Professional(russified)中開發了帶有Unity的Prism 6視圖切換模塊化WPF MVVM應用程序。 System.TypeInitializationException消息「System.Windows.Application的類型初始值設定項引發異常」在我的應用程序啓動時拋出。在App.config文件中添加了模塊註冊後,此異常開始引發。下面是我的應用解決方案的結構:當Prism 6 WPF應用程序啓動時拋出System.TypeInitializationException

enter image description here

正如你所看到的解決方案主要有工程「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也不會被識別)。但我必須註冊我的模塊!我做錯了什麼?請幫幫我。

+0

Попробуюзалить。 –

+0

在你的問題中標記答案作爲解決方案,如果它幫助你的話 – galakt

回答

0

在靜態構造函數或初始值設定項中引發了一些異常。嘗試着看內部的例外。 這是同樣的問題: TypeInitializationException thrown for Program class

啓用調試器必須告訴你例外窗口Visual Studio的,只是ckick「查看詳細...」鏈接查看內部異常和堆棧。可能它會幫助你。

+0

在我的應用程序的哪裏可以捕獲「System.TypeInitializationException」? –

2

你的App.config中缺少configsSection的部分定義:

https://github.com/PrismLibrary/Prism/blob/master/Documentation/WPF/30-ModularApplicationDevelopment.md#registering-modules-using-a-configuration-file

如果我試圖通過註冊代碼(Bootstrepper)模塊,然後模塊類型:授權和校準無法識別並被標記爲錯誤

如果您想要在代碼中引用您的模塊,您必須首先添加對模塊項目的引用。由於您嘗試使用App.config,因此您的Shell應用程序沒有對這些項目的引用。

+0

Add:

。異乎尋常的驚喜。 –

+0

我在App.config中首先設置並排除了異常。 –

相關問題