Как взаимодействовать со стандартным отладчиком Visual Studio при отладке приложения для создания .NET? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть простой консольный проект .NET C #, использующий RabbitMQ с MassTransit:

using System;
using MassTransit;

namespace ConsoleApp1
{
    public static class Program
    {
        public class YourMessage
        {
            public string Text { get; set; }
        }

        public static void Main(params string[] args)
        {
            var bus = Bus.Factory.CreateUsingRabbitMq(sbc =>
            {
                var host = sbc.Host(new Uri("rabbitmq://rabbitmq"), h =>
                {
                    h.Username("guest");
                    h.Password("guest");
                });

                sbc.ReceiveEndpoint(host, "test_queue", ep =>
                {
                    ep.Handler<YourMessage>(context => Console.Out.WriteLineAsync($"Received: {context.Message.Text}"));
                });
            });

            bus.Start();

            bus.Publish(new YourMessage { Text = "Hi" });

            Console.WriteLine("Press any key to exit");
            Console.ReadKey();

            bus.Stop();
        }
    }
}

Этот проект фактически докеризуется через docker-compose.yml, который запускает две зависимости PostGre и RabbitMQ:

version: '3.4'

services:
  consoleapp1:
    image: ${DOCKER_REGISTRY-}consoleapp1
    build:
      context: .
      dockerfile: ConsoleApp1/Dockerfile
    restart: always
    depends_on:
      - rabbitmq
      - postgre

  postgre:
    image: postgres
    environment:
      POSTGRES_USERNAME: root
      POSTGRES_PASSWORD: 0000

  rabbitmq:
    image: rabbitmq:3-management
    ports:
    - "5672:5672"
    - "8080:15672"

Однако при отладке моего решения C # с помощью Visual Studio 2019 я сталкиваюсь с проблемой, связанной со связанным вызовом stdin ниже в строке 34: Console.ReadKey();

System.InvalidOperationException: 'Cannot read keys when either application does not have a console or when console input has been redirected. Try Console.Read.'

(Однако, похоже, что Console.WriteLine("Press any key to exit"); правильно распечатывается).

Я прочитал эту запись на SO , но никакого реального решения не было дано.

Мне интересно, как получить доступ к отладчику Visual Studiostdin из моего приложения для документирования .NET C #.

Возможно ли открыть другую консоль, которая будет использовать оба stdin stdout для текущего приложения отладки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...