VS 2015 Form/Console 应用程序中的功能

VS 2015 Form/Console Functionality in Application

这更像是一个一般性的理论问题,因为这是我第一次开发应用程序,所以我一直在思考如何继续...

我正在 VS 2015 中开发一个报告应用程序,它需要两种类型的功能。它需要有一个 GUI,以便用户可以与报告交互并创建报告,并且需要通过 Windows 任务计划程序安排这些报告。我计划在调度部分使用控制台应用程序。我的问题是,实现这个的最佳方法是什么?截至目前,我在一个解决方案中有两个独立的项目。这是考虑到我的需求的最佳途径,还是有我不知道的更好的选择?我在网上做了一些搜索,但未能找到有效的解决方案。这特别困难,因为调度部分需要从 Windows 表单应用程序中提取应用程序设置。

如有任何帮助或指导,我们将不胜感激。提前致谢!

您需要控制台应用程序的唯一原因是您确实需要控制台界面。听起来并非如此——界面将用 WinForms 编写。因此,您实际上不需要两个单独的应用程序。您可以将所有必要的功能组合到一个可执行文件中。

执行此操作的方法是检查指示应用程序应该 运行 交互式还是无头的命令行参数。也许,您想要做的是在传递 no 命令行参数时使应用程序 运行 交互。这是正常情况,用户在双击您的应用程序以从资源管理器启动它时遇到的情况。

当需要将您的应用程序安排到 运行 后台任务(使用任务计划程序或其他任何工具)时,您可以通过向您的应用程序传递一个特殊的命令行参数来发出信号。您可以决定这是什么,如果您的应用程序可以在后台执行多项操作,您可能需要其中的几个。如果配置 information/parameters 需要(或可以)传递给应用程序以配置它应如何执行后台任务,您也可以在命令行上传递这些。或者,正如您在问题中提到的,您可以从用户上次 运行 应用程序的交互式版本 set/saved 中提取这些设置。

诀窍就是checking for these command-line parameters in your application's Main method。在我提议的设计中,如果没有指定命令行参数,那么您只需像往常一样继续创建主窗体。如果有 个命令行参数,那么您需要解析它们以查看请求的操作。一旦您解析了它们并确定了哪个后台任务应该是 运行,您只需 运行 该后台任务 — 没有 曾经 creating/showing 一个表单。

解析命令行参数有lots of different solutions个。使用库可能是最简单的方法,也可以为您提供最多的功能。但是,如果您只需要 真正 简单的东西,例如 /background 模式,那么您可以轻松地自己编写代码,而无需依赖库或需要学习使用方法

因此,如果您愿意,您可以在单个解决方案中使用单个项目完成所有这些工作。或者,您可以将功能的不同方面拆分为编译为库的不同项目(例如、DLL),但为简单起见仍然只有一个可执行文件。