【问题标题】:Can I build a console application into my C# GUI application?我可以将控制台应用程序构建到我的 C# GUI 应用程序中吗?
【发布时间】:2012-05-14 20:06:25
【问题描述】:

是否可以在我的 C# WinForm 应用程序中包含命令行实用程序?更具体地说,是否可以将命令行工具编译成.exe文件,以便我可以编写GUI来控制命令行工具?

【问题讨论】:

  • 可以通过带参数启动命令行工具来控制。
  • 是的,我知道,但我想将其编译到我的 .exe 文件中,而不是让它在安装目录中漫游。
  • 您可以将其作为资源,然后在启动应用程序时解压缩
  • 这很困难,你必须找到一个临时位置来解压资源。您不能将其转储到与您的应用相同的文件夹中,因为用户不太可能拥有对该文件夹的写入权限。
  • 无论如何,我不确定拥有一个 EXE 的动机是什么。如果您正在编写针对 .NET Framework 的内容,那么您将无法避免大量依赖项。您基本上需要一个安装程序(或其他一些部署机制,如 ClickOnce),因此如果有另一个您依赖的 EXE 有什么关系?

标签: c# winforms command-line


【解决方案1】:

如果您依赖于另一个应用程序,那么在您的 EXE 中打包该实用程序是一个坏主意,因为这意味着每次更新该依赖项时,您都应该更新您的应用程序。我只会构建您的 Windows 应用程序并帮助用户找到所需的 EXE。这就是 Exact Audio Copy 的工作方式,它依赖于另一个 3rd 方应用程序进行编码(特别是 LAME)。

【讨论】:

  • 减少耦合在理论上似乎是一个好主意,但在实践中可能不会那么好。如果他与之交互的命令行实用程序发生了重大变化,那么 GUI 界面将需要更改以做出响应。
  • 实际上它确实适用于我使用的多个应用程序。当 LAME 获得不需要我为 EAC 获得新 GUI 的更新时,我可以放心地替换控制台 lame.exe。通过将两者紧密耦合,它只会增加复杂性并减少选项。
猜你喜欢
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多