C# 双重目的使应用程序作为winform或命令行实用程序运行

C# 双重目的使应用程序作为winform或命令行实用程序运行,c#,.net,winforms,command-line,C#,.net,Winforms,Command Line,对不起,我的标题很模糊,但我不知道如何简洁地标注我想做的事情 我有一个winform应用程序,它试图实现双重用途,因此它也可以作为命令行实用程序由我们的自动化系统运行。在程序Main()中,我有条件地执行所需的代码。唯一的问题是(尽管登录到控制台)没有启动命令窗口。我需要做什么才能使应用程序启动一个命令窗口并将stdout指向该窗口 以下是我的主要观点(无头执行正在正确执行): 将所有逻辑提取到不同的类程序集中 在winforms和控制台应用程序中引用此程序集。瞧。很不幸,我完全理解你的意思,但

对不起,我的标题很模糊,但我不知道如何简洁地标注我想做的事情

我有一个winform应用程序,它试图实现双重用途,因此它也可以作为命令行实用程序由我们的自动化系统运行。在程序
Main()
中,我有条件地执行所需的代码。唯一的问题是(尽管登录到控制台)没有启动命令窗口。我需要做什么才能使应用程序启动一个命令窗口并将stdout指向该窗口

以下是我的主要观点(无头执行正在正确执行):


将所有逻辑提取到不同的类程序集中


在winforms和控制台应用程序中引用此程序集。瞧。

很不幸,我完全理解你的意思,但对如何做到这一点只有一个模糊的概念S@ananthonline是的,我想说这是一个副本,但是Oded在这里发布了一个有用的解决方案,所以也许它应该保持打开状态。@Wug-我建议您阅读ananthonline在a中发布的答案和链接。只有变通办法。因此,这是一个不那么疯狂的选择。尽管如此,许多其他程序都是这样做的。我非常怀疑在C#中没有办法做到这一点。我编写了C++中的这种程序(Windows),Linux上的大量程序和UNIX也做了(Emacs?GeDIT?BaBAB等等)。必须有办法做到这一点。虽然winform的部分可能会让我陷入困境。我同意,这是“正确”的设计方法-但我发布了另一个答案,以防无法进行这种“重新设计”。@ananthonline-这些链接看起来很有趣,同时也很吓人;)
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        if (!ValidateCommandLineArgs())
            Application.Run(new TestResultForm());
        else
        {
            HeadlessExecution();
        }
    }