当我尝试编译 VB.NET Web 项目时,收到一条错误消息:
[PropertyName] is not a member of '[Namespace.Class]'
引用的类是项目引用的 dll 的一部分。该属性肯定存在于引用的类中,并且其访问修饰符为 Public。更重要的是,如果我更新引用,或者只是删除它并将其添加回来,错误就会消失:智能感知显示我的属性 - 一切都很好......直到我尝试再次编译。然后错误返回。我什至重新启动了 Visual Studio,但无济于事。这是怎么回事?
[更新] 在威尔发表评论后,我已将名称空间更改为我绝对确定是唯一的名称空间。现在,我收到了更多相同类型的编译器错误。编译器无法识别某些重载,尽管它们就在智能感知中。奇怪!
这是我之前遇到错误的代码:
Dim gis = New MapQuestGeocoder
Dim r = gis.GetResult(address)
originCoord = r.Coordinate
坐标属性未被识别。现在,错误是“过载解析失败...”,并在不同的类中引发,位于下面的第二行:
Dim gis = New MapQuestDirections()
Dim route = gis.GetResult(originAddress, address)
MapQuestGeocoder 和 MapQuestDirections 都驻留在相同的 dll 中,相同的命名空间:Kosh.Geo
好吧,所以我发现发生了第二个错误,因为 bin 目录保留了旧程序集和新程序集,我对它们进行了不同的命名以匹配新的命名空间。我的结论是,即使在我删除了引用之后,旧的 dll 仍然存在,因为我的项目中的另一个 dll 依赖于这个完全相同的 Geo 程序集。我认为这可能也导致了最初的错误,因为 Geo 程序集不同步。