title: Pre-loading assembly doesn't seem to work
body: <p>I am writing a test to check that all the controllers in my Unity config are registered correctly. As part of my test, I use reflection to check for all the non-abstract classes that inherit from <code>System.Web.Mvc.Controller</code>. However, I consistent get a <code>System.Reflection.ReflectionTypeLoadException</code>. I find this strange for two reasons:</p>
  
  <ol>
  <li>I have a using statement at the top of my file that should cause this particular assembly to load automatically when the test is run.</li>
  <li>I also attempted pre-loading the assembly.</li>
  </ol>
  
  <p>My code is:</p>
  
  <pre><code>using System.Linq;
  using System.Reflection;
  using System.Text;
  using System.Web.Mvc;
  using Microsoft.VisualStudio.TestTools.UnitTesting;
  using Unity;
  
  namespace Presentation.Tests
  {
      [TestClass]
      public class UnityTests
      {
          [TestMethod]
          public void UnityRegistration_ControllersInitialize()
          {
              // Initialize the container the same way we do in the code
              // but make sure that the container is disconnected from the application
              // so we don't accidentally change runtime behavior through testing
              var container = UnityRegistration.Initialize(new UnityContainer());
  
              // Get all the controllers in the presentation layer so we can check whether or not
              // they can all be constructed at runtime
              Assembly.Load("System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
              var assembly = Assembly.ReflectionOnlyLoad("Presentation, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
              var ctrls = assembly.GetTypes()
                  .Where(t =&gt; t.IsAssignableFrom(typeof (Controller)) &amp;&amp; !t.IsAbstract &amp;&amp; t.IsClass);
  
              var builder = new StringBuilder();
              foreach (var ctrl in ctrls)
              {
                  // Check resolution on each type. If resolution fails or
                  // the result is null then we should record the error
                  bool isErr;
                  try
                  {
                      var obj = container.Resolve(ctrl);
                      isErr = obj == null;
                  }
                  catch
                  {
                      isErr = true;
                  }
  
                  if (isErr)
                  {
                      builder.AppendLine(string.Format("Controller of type {0} could not be resolved.", ctrl.Name));
                  }
              }
  
              string errors = builder.ToString();
              if (!string.IsNullOrWhiteSpace(errors))
              {
                  Assert.Fail(errors);
              }
          }
      }
  }
  </code></pre>
  
  <p>Note that the reference to <code>Controller</code> here refers specifically to <code>System.Web.Mvc.Controller</code>.</p>
  
  <p>The exception that was thrown had no inner exception and a large number of loader exceptions, which all stated <code>Cannot resolve dependency to assembly 'System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.</code></p>
  
  <p>Could someone please explain why pre-loading doesn't seem to be working in this manner and how I would properly ensure that the proper assemblies are loaded?</p>