title: Better TypeInitializationException (innerException is also null)
body: <p><strong>Intro</strong></p>
  
  <p>When an user creates a mistake in the configuration of NLog (like invalid XML), We (NLog) throw a <code>NLogConfigurationException</code>. The exception contains the description what is wrong.</p>
  
  <p>But sometimes this <code>NLogConfigurationException</code> is "eaten" by a <code>System.TypeInitializationException</code> if the first call to NLog is from a static field/property.</p>
  
  <p><strong>Example</strong></p>
  
  <p>E.g. if the user has this program:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using NLog;
  
  namespace TypeInitializationExceptionTest
  {
      class Program
      {
          //this throws a NLogConfigurationException because of bad config. (like invalid XML)
          private static Logger logger = LogManager.GetCurrentClassLogger();
  
          static void Main()
          {
              Console.WriteLine("Press any key");
              Console.ReadLine();
          }
      }
  }
  </code></pre>
  
  <p>and there is a mistake in the config, NLog throws:</p>
  
  <pre><code>throw new NLogConfigurationException("Exception occurred when loading configuration from " + fileName, exception);
  </code></pre>
  
  <p>But the user will see:</p>
  
  <p><a href="https://i.stack.imgur.com/8iAJu.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/8iAJu.png" alt="Throw exception"></a></p>
  
  <p>"Copy exception details to the clipboard": </p>
  
  <blockquote>
    <p>System.TypeInitializationException was unhandled
    Message: An unhandled exception of type 'System.TypeInitializationException' occurred in mscorlib.dll
    Additional information: The type initializer for 'TypeInitializationExceptionTest.Program' threw an exception.</p>
  </blockquote>
  
  <p>So the message is gone! </p>
  
  <p><strong>Questions</strong></p>
  
  <ol>
  <li>Why is innerException not visible? (tested in Visual Studio 2013). </li>
  <li>Can I send more info to the <code>TypeInitializationException</code>? Like a message? We already sending an innerException. </li>
  <li>Can we use another exception or are there properties on <code>Exception</code> so that more info is reported? </li>
  <li>Is there another way to give (more) feedback to the user?</li>
  </ol>
  
  <p><strong>Notes</strong></p>
  
  <ul>
  <li>of course we have no influence on the program written by the user. </li>
  <li>I'm one of the maintainers of NLog.</li>
  <li>Do you like to test it by yourself? Checkout <a href="https://github.com/NLog/NLog/tree/TypeInitializationException-tester" rel="nofollow noreferrer">https://github.com/NLog/NLog/tree/TypeInitializationException-tester</a> and start NLog/src/NLog.netfx45.sln</li>
  </ul>
  
  <p><strong>Edit</strong>:</p>
  
  <p>please note that I'm the library maintainer, not the user of the library. <strong>I cannot change the calling code!</strong></p>