Como depurar código compilado com Roslyn em uma extensão do Visual Studio dentro do host atual do Visual Studio?

Eu tenho extensões do Visual Studio que usam o Roslyn para obter um projeto na solução aberta atual, compilá-lo e executar métodos a partir dele. O projeto pode ser modificado pelo programador.

Eu compilei com êxito um projeto em uma extensão do Visual Studio do VisualStudioWorkspace atual.

    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());

            }
        }
    }

Então eu posso carregar o assembly no domínio atual, obter seus tipos e chamar métodos.

O problema é que eu preciso permitir que o programador coloque pontos de interrupção se a configuração atual da solução carregada for depurada.

Preciso executar algum código no Host do Visual Studio atual a partir de uma extensão e permitir que ele seja depurado na instância atual do Visual Studio.

questionAnswers(2)

yourAnswerToTheQuestion