http://stackoverflow.com/questions/1410312/parsing-assembly-qualified-name
There is a parser implementation in Mono and BNF grammar on MSDN
AssemblyNameSpec := IDENTIFIER
| IDENTIFIER ',' AssemblyProperties
AssemblyProperties := AssemblyProperty
| AssemblyProperties ',' AssemblyProperty
AssemblyProperty := AssemblyPropertyName '=' AssemblyPropertyValue
The AssemblyName class can parse the assembly name for you, just pass in the string to its constructor.
Stripping the name is usually very complex.
Consider even simple Tuple<int,string>:
"System.Tuple`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
AssemblyName constructor throws FileLoadException unless it's able to load the assembly
Func<AssemblyName, Assembly> assemblyResolver
http://stackoverflow.com/questions/4085613/parse-assembly-qualified-name-without-using-assemblyname
https://github.com/jbevain/cecil/blob/master/Mono.Cecil/AssemblyNameReference.cs