title: Could not load type...because the parent does not exist
body: <p>This sort of question has come up before, but I've yet to find a clear explanation of what is actually going on---what does "parent does not exist" actually <em>mean</em>?</p>
  
  <p>The portion of my project with this error, which has recently started, is monolithic.  Yes, the app loads DLLs, but both the code instantiating the missing type and the type itself are in the same assembly as far as I know.  </p>
  
  <p>I have a templated managed type, itself a subclass of another templated type:</p>
  
  <pre><code>template &lt;class T&gt;
  public ref class my_class : public my_superclass&lt;T&gt; {
     // blah blah blah
  };
  </code></pre>
  
  <p>In various places there are specializations of this template with various types.  They all work and load fine, except the version specialized with <code>int</code>.  When the app runs (a debug build), instantiation of that particular specialization throws this:</p>
  
  <blockquote>
    <p>An exception of type 'System.TypeLoadException' occurred in yourapp.exe but was not handled in user code.</p>
    
    <p>Additional information: Could not load type
    'my_class&lt;int&gt;' from assembly 'yourapp, Version=1.2.3.0, Culture=neutral, PublicKeyToken=null' because the parent does not exist.</p>
  </blockquote>
  
  <p>Again, the same assembly can load <code>my_class&lt;float&gt;</code>, <code>my_class&lt;double&gt;</code>, and <code>my_class&lt;unsigned int&gt;</code> without batting an eye, and was able to load <code>my_class&lt;int&gt;</code> in a previous build.</p>
  
  <p>I have tried a complete rebuild.  I have tried manually deleting all output directories, rebooting, and rebuilding, and the same problem is still there.  I am at my wits' end.  What does it mean?  How do I fix it?</p>