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

时间:2016-08-11 17:02:07

标签: c# console

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

  1. GUI: 通过鼠标或通过ms dos控制台,如下所示:app.exe
  2. 的CommandLine: 通过这样的ms dos控制台(没有GUI界面):app.exe -c <some_other_options>
  3. 配置我的应用程序时的问题,如Windows Application控制台版本未启动。但当我将其更改为Console Application时,它在命令行中以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());
                }
            }
    

2 个答案:

答案 0 :(得分:2)

我能看到的一种方法是拥有3个组件:

  • 1个常见的类库项目(您可以放置​​所有逻辑代码
  • 1个Windows窗体(或WPF)exe应用程序
  • 1个控制台应用程序项目

winforms和console app都会为后台逻辑引用相同的公共库,并且您只在每个应用程序项目中实现UI部分。唯一的问题是,每个应用程序必须有2个不同的可执行文件。

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

答案 1 :(得分:0)

我根据this document的回答找到了解决方案。

它就像一个魅力