2012-09-18 185 views
14

Employee類我有一些方法,它做工精細。現在,我想添加新的方法,例如「類」不包含定義「法」

public void ExampleMethod() 
{   
} 

然後,我把它叫做

Employee employee = new Employee(); 
employee.ExampleMethod(); 

ExampleMethod出現在智能感知點後顯示,當我打F12還重定向我說的方法,但在啓動項目時出現錯誤:'Employee'不包含'ExampleMethod'的定義,並且沒有找到接受類型'Employee'的第一個參數的擴展方法'ExampleMethod'(你是否缺少using指令或者組裝參考?)

我不喜歡不知道爲什麼會導致這個錯誤,因爲所有其他的早期方法都能正常工作。有什麼問題?

+0

這個類在其他一些程序集? – Tigran

+2

重建所有幫助? – devio

+2

你可以發佈你的全職員工嗎?清理+重建所有可能的幫助 – KyorCode

回答

19

有三種可能性:

1)如果你指舊的DLL則不能使用。所以,你必須參照新的DLL

2)如果您在不同的命名空間中使用,並嘗試使用其他命名空間的DLL,然後它不會參照此方法。

3)您可能需要重建項目

我覺得第三個選項可能是你的原因。請發佈更多信息以瞭解您的確切問題。

+2

4)OP可能會混淆某類歧義,並引用來自不同的assemply /項目的不正確的Employee類? +1。 –

+0

+1 - >不要將Entity Framework數據庫表命名爲類... Doh。 – teynon

+0

我只需要清理並重建 – KthProg

5

創建命名空間名稱類可能resovle您的問題

namespace.Employee employee = new namespace.Employee(); 
employee.ExampleMethod(); 
+0

我在每次類調用之前手動添加了名稱空間。這對我有效。 –

2

我有同樣的問題。原來我引用的項目沒有構建。 當我到Visual Studio中的構建配置管理器並啓用參考項目時,問題得到解決。

0

我與共享代碼的多個項目的解決方案中工作時有同樣的問題。 原來,我忘了更新第二個項目文件夾中的DLL。

我的建議是採取像一個善於在錯誤列表窗口中的「項目」列,並確保該項目還採用了正確的DLL。

問候 多米尼克Rooijackers

+0

感謝您對項目專欄的建議。 在ASP.NET中,Global.asax被認爲是與其他代碼不同的項目,看起來像?所以你不能從Global.asax調用內部/好友方法。很煩人。 – user169771

0

我有同樣的問題。我在屬性文件夾中更改了AssemblyInfo.cs中的裝配版本。但是,我不知道爲什麼會出現這個問題。也許編譯器不明白這個dll更新,只是改變Assembly的版本。

0

今天我遇到一個問題完全相同的症狀爲你描述。我關閉了所有文件,然後重新啓動VS,才發現某些文件從Solution Explorer中消失了

下解決我的問題:通過選擇在Solution Explorer當前項目中,一個小圖標Show all files出現在頂欄上。用鼠標右鍵單擊該文件並選擇Include In Project即可完成此操作。

Credit

1

我只是碰到了這個問題;這個問題似乎不同於這裏發佈的其他答案,所以我會提及它,以防它幫助某人。在我的情況下,我有一個程序集(「A」)中定義的內部基類,第二個程序集(「B」)中定義的內部派生類和測試程序集(「TEST」)。我使用InternalsVisibleToAttribute將組件「B」中定義的內部件暴露給「測試」,但忽略爲組件「A」做這件事。這產生了上面提到的錯誤,沒有進一步指出問題;使用InternalsVisibleToAttribute將組件「A」暴露給「測試」解決了該問題。

0

如果您使用的是其他項目的類,則需要重新構建項目並創建重新的dll。確保在該項目上檢查「Build」 Build - > Configuration Manager in Visual Studio。所以參考項目將重新構建並更新dll。