【发布时间】:2011-10-04 08:11:03
【问题描述】:
我在使用扩展方法时遇到了奇怪的编译器错误。我有一个具有扩展方法的程序集,例如
public static class MyClass
{
public static Bar GetBar(this Foo foo)
{
return new Bar();
}
}
在同一个程序集的其他地方我做这样的事情
Foo foo = new Foo();
var bar = foo.GetBar();
当我清理和编译一切正常。但是一旦我在程序集中做了一个小改动(比如一个额外的空格)并再次构建,我就会收到这样的错误:
错误 973 以下方法或属性之间的调用不明确:'MyNameSpace.MyClass.GetBar(Foo)' 和 'MyNameSpace.MyClass.GetBar(Foo)'
只有在我清理项目后,我才能再次构建。这是使用旧版本程序集的编译器中的问题吗?我现在看到的唯一解决方法是用普通的静态方法替换我的扩展方法。
【问题讨论】:
-
那么它的变化不是很小
-
它是.. 只是一个输入或其他东西让项目再次构建
-
这个项目有哪些参考资料?您是否有可能间接地引用了同一个程序集?
-
就是这样!不知何故,该项目直接引用了自己。删除引用可能会解决问题。谢谢!
-
如果你有一个 Web 应用程序项目而不是一个网站项目呢?在这种情况下,VS 在 bin 文件夹中创建一个与项目同名的程序集。我的项目会构建得很好,但是当我运行它时会抱怨方法不明确。 :(
标签: c# .net-3.5 compiler-construction build