Ah, I should have been clearer about the second half of that workaround.
Public and Shared mean different things:
Public means the method is visible from outside the class.
Shared means the method belongs to the class itself and can be called as clsInitialisation.Initialize().
Once you remove Shared from Initialize, it becomes an instance method. So this call:
If Not clsInitialisation.Initialize() Then
System.Quit()
End If
is still trying to call Initialize on the class itself, but Initialize no longer exists there. That is why the IDE says:
Type 'clsInitialisation' has no member 'Initialize'
The instance-method version needs to create an object first:
Var initialisation As New clsInitialisation()
If Not initialisation.Initialize() Then
System.Quit()
End If
Alternatively, if you want to keep calling it as clsInitialisation.Initialize(), then Initialize must remain Shared, and any methods it calls without an object, such as VersionInfo, must also be Shared.
So this latest IDE error is expected. The original bug was that the compiler previously allowed a Shared method to call an instance method and only failed later at runtime. In the next release that original code will produce a clearer compile-time error.