【问题标题】:Alternate running a console Application as Exe and WinExe [duplicate]作为 Exe 和 WinExe 交替运行控制台应用程序 [重复]
【发布时间】:2016-07-25 20:26:54
【问题描述】:

我有一个正在运行的 C# 控制台应用程序,其输出类型设置为“Windows 应用程序”,以防止在正常使用期间看到控制台。但是,我希望可以选择将程序作为控制台应用程序随意运行,以防用户想要排除故障并查看控制台的输出。

是否可以根据用户的需要将命令行参数传递给可执行文件以在“控制台”模式或“Windows 应用程序”模式下运行应用程序?如果没有,是否有任何其他方法可以即时更改应用程序是否显示控制台?

【问题讨论】:

  • AllocConsole() 没用。创建另一个控制台模式项目并让它的 Main() 方法使用 Process.Start + WaitForExit 来启动你的 winapp.exe。当您将该小程序重命名为 winapp.com 时,您将无法区分。
  • 有可能。在 dotnet publish 之后,您可以删除控制台窗口。看看这里:github.com/molnard/WalletWasabi/blob/…

标签: c# winforms console-application


【解决方案1】:

我想你有一个X-Y Problem。根本问题是您希望用户能够运行都执行相同操作的控制台或 WinForms 程序。一种解决方案是让一个程序同时运行,但正如@roryap 指出的那样,这是不可能的。

第二种解决方案是将程序的业务逻辑放入一个单独的库中。然后,您可以编写一个访问该库的控制台程序和一个也访问该库的 WinForms GUI。然后用户决定运行哪个程序。这是一种将应用程序分成多个层的行之有效的方法。我建议你走这条路。您会发现面向用户的层(控制台、WinForms)很小。以后如果要做Web前端,或者WPF前端,只需要写前端部分,业务逻辑层不会变。

【讨论】:

    【解决方案2】:

    不,你不能。控制台应用程序和 Winforms 应用程序之间有一个非常深刻的根本区别。应用程序一旦编译完成,就无法在运行时更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      相关资源
      最近更新 更多