¿Cómo depurar el código compilado con Roslyn en una extensión de Visual Studio dentro del host actual de Visual Studio?

Tengo extensiones de Visual Studio que usan Roslyn para obtener un proyecto en la solución abierta actual, compilarlo y ejecutar métodos desde él. El proyecto puede ser modificado por el programador.

He compilado con éxito un proyecto en una extensión de Visual Studio del VisualStudioWorkspace actual.

    private static Assembly CompileAndLoad(Compilation compilation)
    {
        using (MemoryStream dllStream = new MemoryStream())
        using (MemoryStream pdbStream = new MemoryStream())
        {
            EmitResult result = compilation.Emit(dllStream, pdbStream);

            if (!result.Success)
            {
                IEnumerable<Diagnostic> failures = result.Diagnostics.Where(diagnostic =>
                    diagnostic.IsWarningAsError ||
                    diagnostic.Severity == DiagnosticSeverity.Error);

                string failuresException = "Failed to compile code generation project : \r\n";

                foreach (Diagnostic diagnostic in failures)
                {
                    failuresException += $"{diagnostic.Id} : {diagnostic.GetMessage()}\r\n";
                }

                throw new Exception(failuresException);
            }
            else
            {

                dllStream.Seek(0, SeekOrigin.Begin);
                return AppDomain.CurrentDomain.Load(dllStream.ToArray(), pdbStream.ToArray());

            }
        }
    }

Luego puedo cargar el ensamblaje en el dominio actual, obtener sus tipos e invocar métodos.

El problema es que necesito permitir que el programador ponga puntos de interrupción si la configuración actual de la solución cargada es de depuración.

Necesito ejecutar algún código en el Visual Studio Host actual desde una extensión y permitir que se depure en la instancia actual de Visual Studio.

Respuestas a la pregunta(2)

Su respuesta a la pregunta