I'm not adding anything to the "BCL vs primitives" naming discussion - everything has already been discussed. I just wanted to give a real-world example of how this effected a project I'm working on:
We were porting business logic code from VB6 to VB.NET, and the developer (wasn't me) couldn't get some of the Win32 API calls to work. It took *lots* of experimentation for him to remember that a "long" in VB6 is actually an "integer" in VB.NET (32bit).
We will be using System.Int32 in the future to prevent this kind of thing from happening the next time someone needs to port what we are writing now 🙂