Вывод на консоль Visual Studio внешней программы, запущенной из проекта библиотеки с использованием динамической загрузки сборки

Я создал простое тестовое решение, состоящее из 3 проектов:

  • Первый проект - это библиотека классов, содержащая интерфейс ITest с методом void DoSomething()
  • Второй проект также является библиотекой классов, содержащей класс Test, который реализует ITest, а в DoSomething он просто выполняет Console.WriteLine.
  • Третий проект - это приложение Forms, которое использует динамическую загрузку сборки для загрузки и создания экземпляра класса Test через интерфейс ITest.

Вот исходный код:

public interface ITest
{
    void DoSomething();
}

----------------------------------------------

public class Test : ITest
{
    public void DoSomething()
    {
        Console.WriteLine("I've done something...");
    }
}

----------------------------------------------

static class Program
{
    [STAThread]
    static void Main()
    {

        String[] files = Directory.GetFiles(Directory.GetCurrentDirectory(), "LibraryTest.dll");
        Assembly assembly = Assembly.LoadFile(files[0]);
        Type typeToStart = null;
        foreach (Type t in assembly.GetTypes())
        {
            if (t.GetInterfaces().Contains(typeof(ITest)))
            {
                typeToStart = t;
            }
        }

        ITest test = (ITest)Activator.CreateInstance(typeToStart);
        test.DoSomething();

        Console.WriteLine("Finished");
    }
}

В LibraryProject с классом Test я ссылаюсь на проект приложения форм, а в свойствах проектов в разделе "Отладка" я выбрал "Запустить внешнюю программу", чтобы запустить приложение форм из папки отладки библиотек:

Настройки отладки

Как и ожидалось, теперь я могу запустить проект библиотеки. Это запускает приложение форм как внешнюю программу из выходной папки. Там формы находят библиотеку dll и динамически загружают ее и выполняют метод DoSomething в моем классе Test.

Тем не менее, и это моя проблема / мой вопрос, я не получаю вывод консоли на Visual Studio. Я могу прекрасно отлаживать приложение форм, когда запускаю проект библиотеки, но вывод консоли никогда не появляется. Когда я использую консольное приложение вместо приложения для форм, открывается внешний cmd, и я могу видеть выходные данные там, но мне нужно, чтобы выходные данные также работали с формами И это должно быть в окне вывода Visual Studios.

У вас есть идея, как я не вижу результат? Один из способов получить вывод - использовать Trace.WriteLine вместо Console.WriteLine, но я не понимаю, почему трассировка работает, а консоль - нет. Любая помощь приветствуется.

1 ответ

Решение

Когда вы используете формы, оно отключит окно консоли. Если вы хотите увидеть вывод, вам нужно вручную включить его.

Как показать вывод консоли / окно в приложении форм?

Другие вопросы по тегам