I have someone else's WPF-based .NET 3.5 app that I'm attempting to update to .NET 4.5. The code ran fine under .NET 3.5, and I'm running Visual Studio 2013 Express on Windows 7. The update seemed to go well and the code compiles fine, but when I try to run the app I get the following exception.
An unhandled exception of type 'System.TypeInitializationException' occurred in PresentationFramework.dll
Additional information: The type initializer for 'System.Windows.Application' threw an exception.
Here are the last few steps in the stacktrace.
PresentationFramework.dll!System.Windows.Windows.Application()
MiniMon.exe!MiniMon.App.App()
MiniMon.exe!MiniMon.App.Main()
Here's the app.xaml file.
<Application x:Class="MiniMon.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
</Application.Resources>
</Application>
I can download a sample WPF app (WPFCalculator) and it runs fine, so I tried stripping the one I'm updating down to just what was in the sample app. I also tried adding a breakpoint at the entry point of the code in app.xaml.cs, but the exception is thrown even before that code is executed. As a last resort I tried running the app on Windows 8, but got the same error.
How can this problem be resolved?
The runtime then wraps this exception inside a TypeInitializationException. Fix. To fix this error, you can add try-catch blocks around the body of the static constructor that throws it. Alternatively, you could avoid the exception with an if-statement.
Most commonly, a TypeInitializationException exception is thrown when a static constructor is unable to instantiate a type. The InnerException property indicates why the static constructor was unable to instantiate the type.
The type initializer of a static class is the code that sets the values of its static variables.
Late to the party, but found this reason in my case. I had added a key-value
pair with appSettings
in app.config
as in
<appSettings>
<add key="EncryKey" value="MyKey"/>
</appSettings>
before <configSections>
. Upon digging in the internet, I came to know that, <configSections>
had to be at the top of the root
, soon after <configuration>
and rest of the orders are irrelevant. Moving appSettings
below <configSections>
helped me fix this issue.
I solve this problem by moving startup section in app.config to the last part before </configuration>
, startup section must be the last part in app.config, like this:
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
Digging Deeper into the Exception Details down to the last InnerException, and I found this:
"Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration> element"
Move configSections to the beginning
One (not very educational) workaround would be to start a new 4.5 project, and copy-paste the relevant pieces of code from the old one.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With