无法加载类型...因为父级不存在

Could not load type...because the parent does not exist

提问人:Brian A. Henning 提问时间:3/12/2015 更新时间:3/12/2015 访问量:1660

问:

这种问题以前也出现过,但我还没有找到一个明确的解释---“父母不存在”到底是什么意思

我的项目中最近开始的有此错误的部分是单体的。是的,该应用程序加载 DLL,但据我所知,实例化缺失类型的代码和类型本身都在同一个程序集中。

我有一个模板化托管类型,它本身就是另一个模板化类型的子类:

template <class T>
public ref class my_class : public my_superclass<T> {
   // blah blah blah
};

在各个地方,此模板都有各种类型的专业化。它们都可以正常工作并加载正常,除了专门用于 的版本。当应用运行(调试版本)时,该特定专用化的实例化会引发以下操作:int

yourapp.exe 中发生了类型为“System.TypeLoadException”的异常,但未在用户代码中处理。

附加信息:无法加载类型 程序集“yourapp, Version=1.2.3.0, Culture=neutral, PublicKeyToken=null”中的“my_class<int>”,因为父级不存在。

同样,相同的程序集可以加载 ,并且无需眨眼,并且能够在以前的版本中加载。my_class<float>my_class<double>my_class<unsigned int>my_class<int>

我尝试过完全重建。我尝试手动删除所有输出目录,重新启动并重建,但同样的问题仍然存在。我一筹莫展。这是什么意思?我该如何解决?

C++ 模板 visual-studio-2008 clr net-2.0

评论

1赞 Hadi Brais 6/18/2015
异常意味着找不到父类型定义。通常在引用“错误”程序集或使用“错误”类型时引发此异常。你说my_class<int>曾经在以前的版本中工作。这意味着您执行了导致使用不同类型或程序集的操作。确保您使用的类型和正在加载的程序集确实是您所需要的。

答: 暂无答案