Shared Main does not make sense (if you build a console application)
Here is an example for shared:
Class WithShared
Shared Sub A_Method()
End Sub
End Class
Class WithoutShared
Sub A_Method()
End Sub
End Class
now possible code in your Main:
Dim WithSharedInstance as New WithShared()
WithSharedInstance.A_Method() 'does not work
WithShared.A_Method() 'works
Dim WithoutSharedInstance as New WithShared()
WithoutSharedInstance.A_Method() 'works
WithoutShared.A_Method() 'does not work
So if a call does not depend on a specific instance, then use Shared. Since you call Shared Methods through the classdefinition, you cannot access variables and methods, which only exist when the class is instanced.