代码之家  ›  专栏  ›  技术社区  ›  Rowland Shaw

错误地引发了类型加载异常

  •  3
  • Rowland Shaw  · 技术社区  · 15 年前

    在我正在开发的一个简单的应用程序中,我有三个相关的程序集:

    1. “mycompany.geography.windows.forms”是一个类库,其中包含winforms控件
    2. “mycompany.geography”对某些基本类型等有一些定义。
    3. “mycompany.geography.windows”是一个简单表单的快速补充应用程序,其中一个控件作为基本的测试工具放到了它上面。

    现在,一切都进展顺利,我可以在设计器中将我的控件放到窗体上,它愉快地添加了相关的引用,但是当我尝试在调试下实际运行它时,我得到:

    System.TypeLoadException occurred
      Message="Could not load type 'MyCompany.Geography.Windows.Forms.MyControl' from assembly 'MyCompany.Geography.Windows, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'."
      Source="MyCompany.Geography.Windows"
      TypeName="MyCompany.Geography.Windows.Forms.MyControl"
      StackTrace:
           at MyCompany.Geography.Windows.Form1.InitializeComponent()
           at MyCompany.Geography.Windows.Form1..ctor() in ...\Projects\MyCompany.Geography\MyCompany.Geography.Windows\Form1.cs:line 10
      InnerException: 
    

    通常我会去看看内部的异常,但没有。真正让我困惑的一点是,如果我按照参考书的内容做了检查,我会把它删掉,然后再看看里面,然后我就有点纠结于要检查什么?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Josh    15 年前

    确保可执行应用程序同时引用mycompany.geography.windows.forms.dll和mycompany.geography.dll。

    在调试会话期间,您是否检查了输出窗口以了解有关未能加载程序集的任何信息?它还可能与程序集的冲突版本相关。当应用程序在异常点中断到调试器时,打开“模块”窗口(debug->windows->modules),查看程序集是否已实际加载。

        2
  •  1
  •   Hans Passant    15 年前

    使用 fuslogvw.exe tool 找出它使用的组件。异常表明它确实找到了程序集,但该程序集不包含MyControl类型。可能它找到了程序集的旧版本。Fuslogvw会告诉你的。