错误地抛出TypeLoadException

时间:2010-03-07 19:49:40

标签: c# winforms

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

  1. “MyCompany.Geography.Windows.Forms”,这是一个包含winforms控件的类库
  2. “MyCompany.Geography”,它对某些基类型等有一些定义。
  3. “MyCompany.Geography.Windows”这是一个简单形式的快速敲击应用程序,其中一个控件作为基本测试工具放在它上面。
  4. 现在,一切进展顺利,我可以放弃对设计器中表单的控制,并愉快地添加了相关的引用,但是当我尝试在调试下实际运行它时,我得到:

    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 个答案:

答案 0 :(得分:1)

确保可执行应用程序同时引用MyCompany.Geography.Windows.Forms.dll和MyCompany.Geography.dll。

您是否在调试会话期间检查了“输出”窗口,以获取有关未能加载程序集的任何信息?它也可能与程序集的冲突版本有关。当应用程序在异常点进入调试器时,打开“模块”窗口(Debug - > Windows - > Modules)并查看程序集是否实际已加载。

答案 1 :(得分:1)

使用fuslogvw.exe tool找出它正在使用的程序集。该异常表示它确实找到了程序集但程序集不包含MyControl类型。也许它找到了旧版本的程序集。 Fuslogvw会告诉你。