如何使C#Windows应用程序在控制台和GUI模式下可用?

如何使C#Windows应用程序在控制台和GUI模式下可用?,c#,console,C#,Console,我已经创建了一个C#应用程序,我需要以两种模式访问我的应用程序: 图形用户界面: 像这样通过鼠标或ms dos控制台:app.exe 命令行: 通过类似这样的ms dos控制台(无GUI界面):app.exe-c 当我像Windows应用程序那样配置我的应用程序时,问题在于控制台版本没有启动。但是,当我将其更改为控制台应用程序时,它使用命令行以2种所需模式启动,但当我通过鼠标单击启动它时,我用gui打开了一个黑色控制台,当我关闭黑色控制台时,gui也关闭 可以通过c#满足我的需求吗 我的主要职能

我已经创建了一个C#应用程序,我需要以两种模式访问我的应用程序:

  • 图形用户界面: 像这样通过鼠标或ms dos控制台:
    app.exe
  • 命令行: 通过类似这样的ms dos控制台(无GUI界面):
    app.exe-c
  • 当我像
    Windows应用程序那样配置我的应用程序时,问题在于控制台版本没有启动。但是,当我将其更改为
    控制台应用程序时,它使用命令行以2种所需模式启动,但当我通过鼠标单击启动它时,我用gui打开了一个黑色控制台,当我关闭黑色控制台时,gui也关闭

    可以通过c#满足我的需求吗

    我的主要职能是:

            [STAThread]
            static void Main(string[] args)
            {           
                var options = new Options();
                var parser = new CommandLineParser(new CommandLineParserSettings(Console.Error));
    
                if (args.Count() != 0)
                {
                    try
                    {
                        if (!parser.ParseArguments(args, options))
                            Environment.Exit(1);
                        customfunc(options);
                        Environment.Exit(0);
                    }
                    catch (Exception e)
                    {
                        System.Console.WriteLine("Fatal error on parsing: " + e.Message);
                        Environment.Exit(1);
                    }
                }
                else
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new frmApp());
                }
            }
    

    我可以看到的一种方式是有3个组件:

    • 1个公共类库项目(您将在其中放置所有逻辑代码
    • 1 Windows窗体(或WPF)exe应用程序
    • 1控制台应用程序项目
    winforms和console应用程序都会为后台逻辑引用相同的公共库,并且您只需在每个应用程序项目中实现UI部分。唯一的问题是,每个应用程序都必须有2个不同的可执行文件


    我确实认为有一种方法可以在同一个应用程序中实现您想要的功能,但我不知道如何使console应用程序不显示console窗口。

    我可以看到的一种方法是有3个程序集:

    • 1个公共类库项目(您将在其中放置所有逻辑代码
    • 1 Windows窗体(或WPF)exe应用程序
    • 1控制台应用程序项目
    winforms和console应用程序都会为后台逻辑引用相同的公共库,并且您只需在每个应用程序项目中实现UI部分。唯一的问题是,每个应用程序都必须有2个不同的可执行文件


    我确实认为有一种方法可以在同一个应用程序中实现您想要的功能,但我不知道如何使控制台应用程序不显示控制台窗口。

    您只是在问如何避免打开窗口?GUI WPF还是winforms?“我如何在我使用的框架中执行此特定操作?另请猜是哪个框架。”@这是我的主要功能是WPF还是winforms?太好了!我们缩小了范围!是的,只是为了避免打开黑色控制台:)我在vs2012中使用了默认建议的GUI,我不知道,因为我在C#和ms技术方面比较新,怎么知道?窗口的基类称为window还是Form?你只是问如何避免打开窗口?GUI是WPF还是winforms?“在我使用的框架中,我该如何做这个特定的事情?另请猜猜是哪个框架。”@EricJ。这是我的主要功能是WPF或winforms?太好了!我们缩小了范围!是的,只是为了避免打开黑色控制台:)我已经使用了vs2012中默认建议的GUI,我不知道,因为我在C#和ms技术方面比较新,怎么知道呢?您的窗口的基类叫window还是Form?