2012-09-18 128 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。