If no assembly is specified, Type.GetType() will only look in the calling assembly and then mscorlib.dll for the type. For it to look in any other assembly, you need to give the Type.AssemblyQualifiedName for the type. For example:

Type.GetType("System.Uri, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");

This is because part of the type identity is its assembly. We don't check for it in all of the assemblies in the appdomain because (a) that would be bad for performance and (b) it's legal to use multiple types with the same name, but from different assemblies. In that case, we wouldn't know which one is the right one to return. So, it's always required to specify the assembly or else we will only make limited guesses.

Of course, if you would rather not supply the assembly display name, you can call Assembly.GetType() or typeof() instead.