好的,这开始让我发疯.我有一个asp.net webapp.非常简单,.aspx.vb中的大多数代码,以及App_Code中的一些类.
这个问题,直到今天才开始发生(即使大部分代码已经编写完成),但有一段时间,我有这样的错误信息:
错误BC30002:未定义类型"XXX"
每次修改App_Code文件夹中的文件时都会发生错误.编辑:好的,如果我暂时不触摸任何内容然后刷新页面也会发生这种情况.我还在试图弄清楚如何触发这个错误.
我只需等待一点点而不接触任何东西,然后刷新页面它可以工作,但它非常烦人.
所以我搜索了一下,但没有任何东西出现,除了输入缺失.任何的想法 ?
听起来像是一个预编译问题,特别是因为你提到你得到错误然后等待它就消失了.ASP.NET可能仍处于动态编译应用程序的过程中,或者已将类型编译为不同的程序集.
使用动态编译时,不能保证将不同的代码隐藏文件编译到同一个程序集中.因此,您引用的类型可能无法在其预编译的程序集中解析.
尝试使用"@Reference"指令向运行时指示您的页面和包含您的类型的文件应该编译到同一个程序集中.
@参考 - MSDN
我想我找到了问题。
我的代码是这样的:
Imports CMS Sub Whatever() Dim a as new Arbo.MyObject() ' Arbo is a namespace inside CMS Dim b as new Util.MyOtherObject() ' Util is a namespace inside Util End Sub
我不确定为什么要这样写,但是事实证明,我在调用类而未调用它们的整个名称空间或导入它们的整个名称空间的事实触发了错误。
我这样重写它:
Imports CMS.Arbo Imports CMS.Util Sub Whatever() Dim a as new MyObject() Dim b as new MyOtherObject() End Sub
现在可以了...
在将新项目添加到旧解决方案后,这发生在我身上。我降低了Target框架以使其与其他“较旧”项目的框架匹配,错误消失了。