Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF Type initialization Exception in C#

Tags:

c#

.net

wpf

xaml

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?

like image 913
wrightjm Avatar asked Feb 27 '14 23:02

wrightjm


People also ask

How to resolve TypeInitializationException in c#?

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.

What is TypeInitializationException?

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.

What is a type initializer?

The type initializer of a static class is the code that sets the values of its static variables.


4 Answers

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.

like image 120
Guruprasad J Rao Avatar answered Oct 19 '22 09:10

Guruprasad J Rao


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>

like image 30
Reza M.A Avatar answered Oct 19 '22 09:10

Reza M.A


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

like image 6
usefulBee Avatar answered Oct 19 '22 09:10

usefulBee


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.

like image 3
Shaaak Avatar answered Oct 19 '22 09:10

Shaaak