【问题标题】:Visual Studio console output of external program started from library project using dynamic assembly loading使用动态程序集加载从库项目开始的外部程序的 Visual Studio 控制台输出
【发布时间】:2016-07-28 05:35:47
【问题描述】:

我创建了一个包含 3 个项目的简单测试解决方案:

  • 第一个项目是一个类库,其中包含一个接口 ITest,其方法为 void DoSomething()
  • 第二个项目也是一个类库,其中包含一个实现 ITest 的 Test 类,在 DoSomething 中,它只执行一个 Console.WriteLine
  • 第三个项目是一个 Forms 应用程序,它使用动态程序集加载通过 ITest 接口加载和实例化 Test 类。

这里是源代码:

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");
    }
}

在带有 Test 类的 LibraryProject 中,我引用了表单应用程序项目,在 Debug 下的项目属性中,我选择了“启动外部程序”以从库调试文件夹启动表单应用程序:

正如预期的那样,我现在可以运行库项目了。这会将表单应用程序作为输出文件夹中的外部程序启动。在那里,表单找到库 dll 并动态加载它并在我的 Test 类上执行 DoSomething 方法。

但是,这是我的问题/我的问题,我在 Visual Studio 中没有得到任何控制台输出。当我运行库项目时,我可以完美地调试表单应用程序,但控制台输出永远不会出现。当我使用控制台应用程序而不是表单应用程序时,会打开一个外部 cmd,我可以在那里看到输出,但我需要输出也可以与表单一起使用,并且它必须在 Visual Studios 输出窗口中。

你知道我怎么看不到输出吗?我想出获得输出的一种方法是使用 Trace.WriteLine 而不是 Console.WriteLine 但我不明白为什么跟踪工作而控制台不工作。任何帮助表示赞赏。

【问题讨论】:

    标签: c# visual-studio console dynamic-assemblies


    【解决方案1】:

    当您使用表单时,它会禁用控制台窗口。如果要查看输出,则需要手动启用它。

    How do I show a console output/window in a forms application?

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      相关资源
      最近更新 更多