を使用してライブラリプロジェクトから始めた私は、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でテストクラスで、私は、フォームアプリケーションプロジェクトを参照すると、デバッグ中のプロジェクトのプロパティで、私が開始するには、「外部プログラムを起動する」を選びましたライブラリのデバッグフォルダからフォームアプリケーション:
予想したように、私は今、ライブラリプロジェクトを実行することができます。これにより、出力フォルダー内から外部プログラムとしてフォームアプリケーションが開始されます。そこでは、フォームはライブラリdllとdynamicallをロードしてロードし、TestクラスでDoSomethingメソッドを実行します。
しかし、これは私の問題です/私の質問、私はVisual Studioでコンソール出力を取得しません。ライブラリプロジェクトを実行するとフォームアプリケーションを完全に細かくデバッグできますが、コンソール出力は決して表示されません。フォームアプリケーションの代わりにコンソールアプリケーションを使用すると、外部のcmdが開き、そこに出力が表示されますが、フォームでも動作する出力が必要で、Visual Studioの出力ウィンドウに表示されている必要があります。
出力がどのように表示されないのか考えていますか?私が出力を得るために考え出した1つの方法は、Console.WriteLineではなくTrace.WriteLineを使用することですが、コンソールが動作していない間にトレースが機能する理由を説明しません。どんな助けもありがとうございます。