C#中的WPF类型初始化exception
我有其他人的基于WPF的.NET 3.5应用程序,我正在尝试更新到.NET 4.5。 代码在.NET 3.5下运行正常,我在Windows 7上运行Visual Studio 2013 Express。更新似乎进展顺利且代码编译良好,但是当我尝试运行应用程序时,我得到以下exception。
An unhandled exception of type 'System.TypeInitializationException' occurred in PresentationFramework.dll Additional information: The type initializer for 'System.Windows.Application' threw an exception.
以下是stacktrace中的最后几个步骤。
PresentationFramework.dll!System.Windows.Windows.Application() MiniMon.exe!MiniMon.App.App() MiniMon.exe!MiniMon.App.Main()
这是app.xaml文件。
我可以下载一个示例WPF应用程序(WPFCalculator),它运行正常,所以我尝试将我正在更新的那个剥离到示例应用程序中的内容。 我还尝试在app.xaml.cs中的代码的入口点添加断点,但是在执行该代码之前就抛出了exception。 作为最后的手段,我尝试在Windows 8上运行该应用程序,但得到了同样的错误。
如何解决这个问题?
一个(不是非常有教育意义的)解决方法是启动一个新的4.5项目,并从旧的代码中复制粘贴相关的代码片段。
我通过将app.config中的启动部分移动到之前的最后一部分来解决这个问题,启动部分必须是app.config中的最后一部分,如下所示:
迟到了,但在我的情况下发现了这个原因。 我在app.config
添加了appSettings
key-value
对,如下所示
在
之前。 在网上挖掘时,我开始知道,
必须位于root
的顶部,在
之后不久,其余的订单都无关紧要。 移动
下面的appSettings
帮助我解决了这个问题。
深入研究Exception详细信息直到最后一次InnerException,我发现了这个:
"Only one element allowed per config file and if present must be the first child of the root element"
将configSections移动到开头
标记应
和
部分之后。 这使我的代码工作。
检查connectionStrings
的拼写,如果使用connectionString=""
! ‘S’应该是大写..XML区分大小写:)
检查app.config文件,确保您没有不再使用的lib或者已从项目中删除的lib的配置
我更换了折旧的配置库,并删除了entity framework,所以我无法追踪到底有什么问题,但重建帮助了我。 重建App.Config文件的解决方案。