Error BC30002 - Type XXX is not defined

I think I found the problem.

My code was like that :

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

I'm not sure why I wrote it like that, but it turns out the fact I was calling classes without either calling their whole namespace or importing their whole namespace was triggering the error.

I rewrote it like this :

Imports CMS.Arbo
Imports CMS.Util 

Sub Whatever()
    Dim a as new MyObject()
    Dim b as new MyOtherObject()
End Sub

And now it works...


This happened to me after I added a new project to an old solution. I lowered the Target framework to match that of the other 'older' projects and the error went away.


Sounds like a pre compile issue, particularly because you mention that you get the error and then wait and it disappears. ASP.NET may be still in the process of dynamically compiling your application or it has compiled the types into different assemblies.

With dynamic compilation, you are not guaranteed to have different codebehind files compiled into the same assembly. So the type you are referencing may not be able to be resolved within its precompiled assembly.

Try using the "@Reference" directive to indicate to the runtime that your page and the file that contains your type should be compiled into the same assembly.

@ Reference - MSDN