2011-08-01 88 views
1

我有一個名爲「卡車」的部分類,它是使用LINQ to SQL設計器自動生成的。我在一個單獨的代碼文件中使用同名部分類擴展了這個類。我向我的擴展器類添加了一個名爲「ContainerCount」的方法。在開發過程中,解決方案有時會生成良好,但有時會出現錯誤...爲什麼編譯器找不到擴展dbml的部分類?

CS1061:'truck'不包含'ContainerCount'的定義,也沒有擴展方法'ContainerCount'接受可以找到'卡車'類型的第一個參數(你是否缺少使用指令或程序集參考?)

在開發過程中,我所要做的就是再次構建它,而且這將是沒有錯誤的。這似乎是被擊中或錯過。但是現在我已經將它上傳到服務器,它一直顯示相同的錯誤。

關於爲什麼編譯器有時會看到部分類的其餘部分,有時不知道的任何想法?

//from DBML file 
[Table(Name="dbo.truck")] 
public partial class truck : INotifyPropertyChanging, INotifyPropertyChanged 
{...} 

//from extension file 
public partial class truck 
{ 
    public int ContainerCount(CTSDataClassesDataContext db) 
    {...} 
} 

//Code that creates error 
int tContainers = 0; 
foreach (var t in trucks) 
{ 
    tContainers += t.ContainerCount(db); 
} 
+0

你能給我看一些代碼嗎?從LINQ to SQL生成的「卡車」是否具有「部分」修飾符? –

+1

名稱空間是否相同?這些文件是否在同一個項目中? – Oded

+0

我認爲這是由於設計師的東西。這是把代碼放入Windows窗體的InitializeComponents()中。不知何故,VS設計師出於不同的原因決定重新生成它,因此您的更改將被清除。認爲這是或多或少相同的問題,因爲你將擴展由設計師產生的一些問題。 – Tigran

回答

2

它通過看起來當我做了構建類似「建設 - >生成解決方案」編輯DBML文件後,它會嘗試使用過時的DLL來保持。當我使用「Build-> Rebuild Solution」時,它可以正常工作。看起來像一個錯誤,使Visual Studio看不到編輯的dbml需要重建。

希望這可以幫助有同樣問題的人。

+0

+1:這不是我第一次看到這樣的東西。我遇到了一些情況,需要刪除'bin'和'obj'目錄(以防萬一),然後重建完成。 –

相關問題