The reason for this is that Assembly is not only a KEYWORD but it is also a CLASS.
The compiler gets confused on what you are trying to do.
Which is why
Dim a As [Assembly] = [Assembly].GetExecutingAssembly()
Works ( It knows what you are trying to do)
And
Dim a as Assembly or Dim a as [Assembly]
does not (here it does not )
Which is why you should use the fully qualified name
Dim a AS System.Reflection.Assembly
If you create a class called textbox in your windows application and tried to instantiate like so
Dim myText as Textbox
You would get an Ambiguous error because it does not know which textbox class you want to use, yours or the one in Windows.System.Forms.
Assembly is more convoluted because it is both a class AND a keyword.
DotNetDoc
M.C.S.D.
---------------------------------------
Tell me and I forget. Show me and I remember. Involve me and I understand.
- Anonymous Chinese Proverb
-----------------------------------
If you can't explain it simply, you don't understand it well enough.
- A. Einstein