C# 为什么可以';编译器是否找到扩展dbml的部分类?

C# 为什么可以';编译器是否找到扩展dbml的部分类?,c#,linq,C#,Linq,我有一个名为“trucks”的部分类,它是使用LINQtoSQL设计器自动生成的。我在一个单独的代码文件中使用同名的部分类扩展了该类。我在扩展程序类中添加了一个名为“ContainerCount”的方法。在开发过程中,解决方案有时会构建得很好,但有时会出现一个错误,即 CS1061:“truck”不包含“ContainerCount”的定义,并且找不到接受类型为“truck”的第一个参数的扩展方法“ContainerCount”(是否缺少using指令或程序集引用?) 在开发过程中,我所要做的就

我有一个名为“trucks”的部分类,它是使用LINQtoSQL设计器自动生成的。我在一个单独的代码文件中使用同名的部分类扩展了该类。我在扩展程序类中添加了一个名为“ContainerCount”的方法。在开发过程中,解决方案有时会构建得很好,但有时会出现一个错误,即

CS1061:“truck”不包含“ContainerCount”的定义,并且找不到接受类型为“truck”的第一个参数的扩展方法“ContainerCount”(是否缺少using指令或程序集引用?)

在开发过程中,我所要做的就是重新构建它,它将不会出错。这似乎是偶然的。但现在我已经将其上传到服务器,它始终显示相同的错误

关于为什么编译器有时能看到部分类的其余部分,有时却看不到,有什么想法吗

//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);
}

看起来,当我在编辑dbml文件后通过“build->build Solution”进行构建时,它试图继续使用过时的dll。当我使用“Build->Rebuild Solution”时,它工作得很好。看起来有个bug使Visual Studio无法看到需要重新生成已编辑的dbml


希望这能帮助有同样问题的人。

您能展示一些代码吗?从LINQ到SQL生成的“trucks”是否有“partial”修饰符?名称空间是否相同?这些文件在同一个项目中吗?我想这是因为设计师的东西。这有点像是将代码放入windows窗体的InitializeComponents()中。不知何故,VS designer出于不同的原因决定重新生成它,因此您的更改将被清除。认为这或多或少是同一个问题,因为您将扩展设计器生成的某些内容。因为我使用的是单独的分部类,所以我的更改不会被清除,虽然如果它们在同一个分部类中,它们就会是。@Tigran分部类的全部要点是避免+1:这不是我第一次看到这样的东西。我遇到了一些情况,需要删除
bin
obj
目录(以防万一),然后重新构建。