【问题标题】:Run as Windows Service, Console App, or Wpf App in a single VS2010 project在单个 VS2010 项目中作为 Windows 服务、控制台应用程序或 Wpf 应用程序运行
【发布时间】:2012-07-03 14:34:33
【问题描述】:

我目前有 3 个项目,产生 2 个可执行文件

    1. 类库做的工作
    1. 使用库 #1 的 Windows 服务项目
    1. 使用库 #1 的 WPF 应用程序

类库用于执行一些客户端-服务器交互。

我想要的是只有 2 个项目、类库和另一个生成可执行文件的项目,该可执行文件可以作为控制台、WPF 或 Windows 服务运行。这样做是否可能(或可取)?项目输出类型应该是什么?

主要原因是我们需要一些固定的文件路径来运行自动化脚本。我想避免复制 WPF 可执行文件和服务/控制台可执行文件的脚本。

【问题讨论】:

  • “自动脚本”难道不总是想调用控制台应用程序吗?在那种情况下,如果有 3 个可执行文件又有什么关系呢?
  • 脚本以什么方式引用可执行文件?
  • 我们的脚本主要做文件维护操作:清理日志文件、备份文件等。无论应用程序如何使用,都会生成这些文件。
  • 你能解决这个问题吗?
  • 不。我目前还有一个 WPF 项目和另一个 Windows 服务项目。

标签: c# wpf visual-studio-2010 windows-services


【解决方案1】:

我不确定是否能够执行 WPF,但 TopShelf 将允许您将可执行文件作为控制台应用程序或服务运行。

http://topshelf-project.com/

有两种使用 TopShelf 的方法 - exe as a serviceusing shelving

要作为控制台应用程序运行,您只需运行 yourprogram.exe。 要安装为服务,只需安装 yourprogram.exe。

【讨论】:

    【解决方案2】:

    我知道这个问题有点老了,但是...

    您可以将新项目作为 WPF 项目启动,然后在解决方案资源管理器中右键单击它并将“启动为”更改为控制台应用程序。您的 WPF 应用程序仍将完全相同地运行,但会出现一个控制台窗口,您可以在其中使用诸如 Console.WriteLine() 调用之类的内容。

    然后您可以接受一个命令行参数,该参数告诉您的应用程序抑制 UI 的其余部分,只留下控制台部分。不过,我认为这不会允许它作为服务运行。

    【讨论】:

      【解决方案3】:

      你必须去 Windows Communication Foundation aka WCF,点击链接学习基础知识

      http://msdn.microsoft.com/en-us/netframework/dd939784

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-25
        相关资源
        最近更新 更多