2016-07-28 9 views
0

を使用してライブラリプロジェクトから始めた私は、3つのプロジェクトからなる簡単なテスト・ソリューションを作成しました:Visual Studioのコンソール出力は、動的アセンブリの読み込み

  • 最初のプロジェクトは、メソッドとのインタフェースたITestを含むクラスライブラリですvoid DoSomething()
  • 2番目のプロジェクトは、ITestとDoSomethingを実装するクラスTestを含むクラスライブラリでもあり、Console.WriteLineだけを実行します。
  • 3番目のプロジェクトは、動的アセンブリロードを使用してロードするFormsアプリケーションですITestインターフェイスを介してTestクラスをインスタンス化するe。

ここでは、ソースコードである:

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でテストクラスで、私は、フォームアプリケーションプロジェクトを参照すると、デバッグ中のプロジェクトのプロパティで、私が開始するには、「外部プログラムを起動する」を選びましたライブラリのデバッグフォルダからフォームアプリケーション:

Debug settings

予想したように、私は今、ライブラリプロジェクトを実行することができます。これにより、出力フォルダー内から外部プログラムとしてフォームアプリケーションが開始されます。そこでは、フォームはライブラリdllとdynamicallをロードしてロードし、TestクラスでDoSomethingメソッドを実行します。

しかし、これは私の問題です/私の質問、私はVisual Studioでコンソール出力を取得しません。ライブラリプロジェクトを実行するとフォームアプリケーションを完全に細かくデバッグできますが、コンソール出力は決して表示されません。フォームアプリケーションの代わりにコンソールアプリケーションを使用すると、外部のcmdが開き、そこに出力が表示されますが、フォームでも動作する出力が必要で、Visual Studioの出力ウィンドウに表示されている必要があります。

出力がどのように表示されないのか考えていますか?私が出力を得るために考え出した1つの方法は、Console.WriteLineではなくTrace.WriteLineを使用することですが、コンソールが動作していない間にトレースが機能する理由を説明しません。どんな助けもありがとうございます。

答えて

関連する問題