I'm not sure what the "IsExternal" check was doing here. yes, it looks like it's for F# extension methods on a type defined in another assembly. But the right way to do this now is to make sure the compiler service invocation also includes a reference to the external assembly in the command line options used.

Using ReflectionType (which is not available from the FCS API) is wrong because it would, for example, drop erased unit-of-measure parameters when extending an F# type from a non-available assembly.

I think we really just have to 
(a) give much better diagnostics from FCS when assemblies are missing (that's easy!)
(b) migrate users of FSharp.Formatting across to give all referenced assemblies as arguments (I believe we correctly support #r references in scripts, it's just the documentation generation that needs the referenced assembly set)