【问题标题】:What should the assembly names be for an application providing both a GUI and command-line interface?提供 GUI 和命令行界面的应用程序的程序集名称应该是什么?
【发布时间】:2010-01-08 19:28:53
【问题描述】:

我已经用 .NET 编写了一些桌面应用程序,它们既提供了用于正常使用的前端 GUI,也提供了用于其他需求(例如扩展、调度、自动化、高级使用等)的命令行界面。命名这两个可执行文件的最佳做法是什么,因为它们构建在同一个目录中?我见过或做过以下一些事情:

  • 将 GUI 命名为 <X>.GUI.exe,将控制台命名为 <X>.exe
  • 将 GUI 命名为 <X>.exe,将控制台命名为 <X>.Console.exe
  • 将 GUI 命名为 <X>g.exe 和控制台 <X>c.exe,或其他名称-后缀组合。
  • 将代码置于上述描述性命名空间下,但排除控制台可执行文件上的命名空间。也许让它更短的名字和所有的小写字母也是如此。这很容易在 shell 中键入,但普通用户仍然可以看到 GUI 可执行文件的复杂命名空间。
  • 完全使用不同的名称或命名空间。

对于同一个通用应用程序有两个不同的界面——一个是图形界面,另一个是文本界面,但我希望文件名清楚地表明程序是什么,同时给出提示(不仅仅是在它的图标中) ) 无论是 GUI 还是控制台,都没有使用神秘的名称。

旁注:有一个类似的“问题”,您有一个 .NET 类库并想编写一个前端以在不编写代码的情况下使用它。在这里,我通常会看到名为 <X>.Exe.exe 的可执行文件,其中库只是称为 <X>.dll (但我不相信这是一个好的做法),或者它是一个更友好的名称,例如Some Tool Name.exe。但在这个问题上,我更感兴趣的是如何命名可执行文件。

【问题讨论】:

  • 我一般使用的命名约定是CompanyName.ApplicationName.Component
  • In 使用此回复已删除的答案:toastedcode.wordpress.com/2006/10/11/…。我以前实际上已经这样做过,我发现它可能会产生误导。例如,当您在终端中运行没有参数的程序时,它通常会执行默认操作或显示帮助消息,但会打开一个 GUI。如果你真的想在运行 GUI 时接受一个参数(例如,另一个文件的一些拖放操作),它可能会更加混乱。总的来说,我认为这样做很少见,所以我选择不在问题中包含它。
  • 你为什么不只使用一个.exe?修改Main()方法,有参数时不要调用Application.Run()。

标签: .net user-interface command-line namespaces naming


【解决方案1】:

我的看法是,命名空间从编码的角度来看是有意义的,我的用户可能不应该看到这一点,尤其是对于控制台应用程序,他们正在输入它。

如果我有一个应用程序的命名空间类似于......

  jarvis.scrabblehelper.gui and 
  jarvis.scrabblehelper.console

那么我的exe就是

  ScrabbleHelper.exe 

控制台版本是

  sh.exe

【讨论】:

    【解决方案2】:

    将它们放在一个单独的 winexe 程序集中,当您需要在控制台中运行时,将其附加到 this link 之后。

    【讨论】:

    • 我不喜欢投反对票,但是链接中有 3 个 cmets 说他们有问题.. 你试过了吗???
    • @gbianchi:我更新了链接,这次我测试了代码(C# 代码)。感谢您的通知。
    • (从上面复制)我以前确实这样做过,我发现它可能会误导用户。例如,当您在终端中运行没有参数的程序时,它通常会执行默认操作或显示帮助消息,但会打开一个 GUI。如果你真的想在运行 GUI 时接受一个参数(例如,另一个文件的一些拖放操作),它可能会更加混乱。总的来说,我认为这样做很少见,所以我选择不在问题中包含它。
    猜你喜欢
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2018-11-26
    • 2016-01-18
    相关资源
    最近更新 更多