2010-12-01 6 views
2

Gibt es eine Möglichkeit, innerhalb der Komponente in C# zu erkennen, ob die Anwendung, die diese Komponente verwendet, in der Konsolenanwendung oder anderen ausgeführt wird?bin ich in der Konsolen-App?

Antwort

8

Verwenden Sie Environment.UserInteractive. Wenn true Sie in einer Konsole sind. Wenn false Sie könnten in einem Dienst sein.

+0

'UserInteractive' ist 'wahr' für eine gefensterte App, nicht nur eine Konsolenanwendung. – Qwertie

+0

Es gibt keine Benutzeroberfläche auf einer Konsole. –

1

Die Informationen, die Sie benötigen, sind eine Eigenschaft Ihrer exe-Baugruppe. Wenn Sie das Manifest Ihrer Assembly mit einem Tool wie ildasm.exe anzeigen, können Sie die Subsystem-Eigenschaft anzeigen, die den Typ der Ausführungsumgebung angibt, die Ihre Main-Methode startet.

Allerdings scheint Reflection diese Informationen nicht direkt verfügbar zu machen.

Der Code in dem folgenden Link enthält ein Beispiel dafür, wie die EXE-Datei selbst zu lesen und diese infromation erkennen:

http://blogs.msdn.com/b/kstanton/archive/2004/03/31/105060.aspx

Ich hoffe, das half.

+0

cheers Ran, aber ich möchte, dass mein Code in der Bibliothek erkennt, ob der Prozess, der diese Bibliothek aufgerufen hat, im Konsolenmodus ausgeführt wurde. Aber danke für den Link, sicher, dass es irgendwann nützlich sein wird. – Heinnge

+0

Diese Methode sollte noch funktionieren. Sie können Assembly.GetEntryAssembly (oder etwas Ähnliches, ich erinnere mich nicht an den genauen Namen) verwenden und dann Assembly.Location verwenden, um die EXE-Datei selbst zu finden. – Ran

Verwandte Themen