2010-03-07 86 views
3

在一個簡單的應用程序我的工作,我有三個相關的組件:TypeLoadException拋出erroniously

  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: 

通常我會去看內部的異常,但沒有。這讓我感到困惑的是,我已經預見到它已經遵循了參考,並且在那裏查看,而且我對於要檢查什麼有點卡住了。

+3

@sniperX這可能是我聽過的最糟糕的建議。 – Josh 2010-03-07 20:10:59

回答

1

確保可執行應用程序同時引用MyCompany.Geography.Windows.Forms.dll和MyCompany.Geography.dll。

您是否在調試會話期間檢查了輸出窗口,以獲取有關未能加載程序集的任何信息?它也可能與組件的衝突版本有關。當應用程序在異常時進入調試器時,打開Modules窗口(Debug - > Windows - > Modules)並查看程序集是否已加載。

+0

嗯,這回答了它,但由於愚蠢的原因:我會重新命名控件庫,但忘記重命名程序集,所以MyCompany.Geography.Windows.exe和MyCompany.Geography.Windows.dll之間存在衝突 - - 我現在就去班級的後面... – 2010-03-07 20:26:14

1

使用fuslogvw.exe tool找出它正在使用什麼組件。異常表示它確實找到程序集,但程序集不包含MyControl類型。也許它會發現程序集的舊版本。 Fuslogvw會告訴你。

+0

+1 for fuslogvw.exe工具... – 2010-03-07 20:59:45