2011-12-15 39 views
9

我只是想分享我學到的東西。這裏有很多關於TypeLoadExceptions的帖子,但是他們沒有一個似乎有我需要的答案。TypeLoadException的解決方案

這個頁面有一些特別好的信息,但似乎並沒有專門解決我所看到的,我怎麼解決它(可能是錯誤的):

TypeLoadException says 'no implementation', but it is implemented

爲我解很簡單:刪除Visual Studio 2010緩存並用於生成彙編文件的任何文件。


背景的問題:

這裏有一些更多的細節。我看到一個TypeLoadException像:

未處理的異常:System.TypeLoadException:方法從組件[組件名] [方法名]在 類型[類型名稱],版本= XXXX, 文化=中性公鑰= null沒有實現。

我確實有一個實現......我想,直到我看着與ILDASM大會。我發現我正在將老版本的DLL寫入到我的輸出文件夾中,這些老版本的界面已經過時。我的輸出文件夾不是默認設置,而是項目文件夾外的相對路徑(也許VS無法完全處理?)。在對項目進行清理/重建之後,項目的「obj」文件夾是我的項目文件夾中的所有子文件夾中唯一具有DLL上的正確日期戳記的文件夾。由於某種原因,「bin」文件夾仍舊有舊版本。我想這就是複製到輸出文件夾的內容。

在此之前我曾嘗試:

  • 清潔/重建
  • 重新啓動的Visual Studio(2010)
  • 重啓
  • 刪除我的集DLL輸出文件夾(BIN \ 86 \調試)

...沒有成功。

我不知道爲什麼VS沒有將「obj」中正確的程序集複製到輸出文件夾中......引用過時程序集的項目是正確的

+2

不要在問題中發佈解決方案。只要發佈問題,就好像您仍然遇到問題,然後將解決方案作爲答案發布。最好等一天左右 - 讓人們有時間發佈自己的解決方案,你可能會發現自己比自己的更好。 – ChrisF 2011-12-15 23:19:48

回答

2

您是否使用某種源代碼管理並執行檢入和檢出內容?如果是,請確保obj和bin文件夾未簽入到源代碼管理中。如果他們從源代碼管理中刪除它們,請檢查所有內容,然後重新構建解決方案。

0

我在Visual Studio 2015中遇到過這種問題,並通過使用解決方案的NuGet包管理器來解決此問題,以重新安裝以某種方式安裝在不同版本中的軟件包。