调用方法签名时无法正确识别它(方法 xxx 的重载没有采用 2 个参数)

Method signature is not recognized properly when calling it (No overload for method xxx takes 2 arguments)

我正在研究一些简单的实用程序,用于对存储过程、脚本等进行单元测试。我有这个扩展方法签名:

public static List<List<dynamic>> RunScript(this SqlConnection conn, string command, params object[] args)

此尝试调用以某种方式生成编译错误:

conn.RunScript("DELETE FROM BE_Resources WHERE CreatedByContactId = {0}", org);

其中 org 是一个 int

Error 2 No overload for method 'RunScript' takes 2 arguments C:\GIT\MainLine\tests\BE2.Database.Tests\GroupedAuthorizations\GroupedAuthorizationsUnitsTests.cs 171 13 BE2.Database.Tests

在代码中导航时,F-12 确实将我带到了这个方法。此外,shift F-12 产生的命中数与全局文本搜索相同。

我创建了一个新的扩展方法 RunScriptTWO,现在我在尝试调用 that 时遇到编译错误 - 编译器就是找不到它。然后我通过在名称旁边键入 XXX 来破坏我原来的 RunScript 方法。按 F-12 去定义现在中断了,但是项目编译了,我的所有测试仍然通过。

我已经多次清理我的解决方案并重新构建。似乎 RunScript 方法的某种内部表示刚刚过时,我尝试刷新它的所有尝试都惨遭失败。

我无法用一个更简单的例子重现这个错误。 (即,一个简单的对象扩展方法接受一个字符串参数,params 数组工作正常)。

根据评论链,这听起来像是您的一个或多个项目没有构建。您可以在“构建”>“配置管理器”下验证哪些项目设置为构建。