Se la classe Foo la compiliamo separatamente in un file "Foo.vb":
' Foo.vb
<Microsoft.VisualBasic.CompilerServices.StandardModule()> _
Public NotInheritable Class Foo
Public Sub New()
End Sub
End Class
con:
vbc /t:library Foo.vb
e proviamo a consumarla nel codice seguente:
' Test.vb
Class Test
Shared Sub Main()
Dim f As Foo = New Foo
End Sub
End Class
con:
vbc /r:Foo.dll Test.vb
otteniamo l'errore BC30371 ("Module 'Foo' cannot be used as a type.") come mostrato nel post precedente.
Se invece mettiamo tutto in un file, l'errore non appare più!
' TestFoo.vb
<Microsoft.VisualBasic.CompilerServices.StandardModule()> _
Public NotInheritable Class Foo
Public Sub New()
End Sub
End Class
Class Test
Shared Sub Main()
Dim f As Foo = New Foo
End Sub
End Class
cioè:
vbc TestFoo.vb
compila senza problemi.
Il comportamento non mi sembra per nulla normale. A voi? Secondo voi sarebbe da postare su MSDN Product Feedback Center?
(Aggiornamento 1: 14/02/05): L'ho proposto come bug, qui.
(Aggiornamento 2: 14/02/05): Resolved by design: leggere il commento di Paul Vick