Ich habe eine einfache Testlösung geschaffen, bestehend aus 3-Projekten:Visual Studio Konsolausgabe externen Programmstart von Bibliotheksprogramm unter Verwendung eines dynamische Baugruppen-Lade
- Das erste Projekt ist eine Klassenbibliothek eine Schnittstelle ITest mit einem Verfahren, enthaltend (void DoSomething)
- Das zweite Projekt ist auch eine Klassenbibliothek, einen Klasse-Test enthält, die ITest und in DoSomething implementiert, es funktioniert einfach ein Console.WriteLine
- Das dritte Projekt ist eine Anwendung, die Forms dynamische Assembly Laden verwendet zu laden und instanziieren Sie die Test-Klasse über die ITest-Schnittstelle e.
Hier ist der Quellcode:
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");
}
}
Im LibraryProject mit der Test-Klasse, das Bezugs ich das Projekt Formen Anwendung und in den Projekten Eigenschaften unter Debug, wählte ich „externes Programm Start“ zu starten die Formularanwendung aus den Bibliotheken Debug-Ordner:
Wie erwartet, kann ich jetzt das Bibliotheksprojekt laufen. Dies startet die Formularanwendung als ein externes Programm innerhalb des Ausgabeordners. Dort finden die Formulare die Bibliothek dll und dynamicall laden sie und führt die DoSomething-Methode für meine Testklasse aus.
Allerdings, und das ist mein Problem/meine Frage, ich bekomme keine Konsolenausgabe in Visual Studio. Ich kann tadellos die Formularanwendung debuggen, wenn ich das Bibliotheksprojekt ausführe, aber die Konsolenausgabe taucht nie auf. Wenn ich eine Konsolenanwendung anstelle einer Formularanwendung verwende, wird ein externer cmd geöffnet, und ich kann die Ausgabe dort sehen, aber ich brauche die Ausgabe, um auch mit Formularen zu arbeiten UND sie muss im Visual Studios-Ausgabefenster sein.
Haben Sie eine Idee, wie ich die Ausgabe nicht sehen kann? Eine Möglichkeit, eine Ausgabe zu erhalten, besteht darin, Trace.WriteLine anstelle von Console.WriteLine zu verwenden, aber ich unterzeichne nicht, warum die Ablaufverfolgung funktioniert, während die Konsole dies nicht tut. Jede Hilfe wird geschätzt.