See also #78303 (comment)
Eventually people will want to be able to use MSBuildWorkspace to load a file-based program. At minimum we probably want to add an OpenProjectAsync which takes both a project path and content, so, if the caller is able to put together a virtual project, they can make a workspace for it.
We may also want a new method that takes the FBP path itself and makes the virtual project and so on under the hood.
As part of this, batch builds need to be supported for in-memory projects using the Roslyn BuildHost APIs. See #78303 (comment).