2012-07-03 2 views
0

я в настоящее время есть 3 проектов, которые производит 2 исполняемых файловЗапуск в качестве службы Windows, консольного приложения или МОФ App в одном проекте VS2010

    1. библиотеки классов, чтобы сделать работу
    1. Проект Windows Service, который использует библиотеку # 1
    1. WPF приложение, которое использует библиотеку # 1

библиотеки классов используется для выполнения некоторого взаимодействия клиент-сервер.

Я хочу иметь только 2 проекта, библиотеку классов и другую, которая создает исполняемый файл, который может быть запущен как консоль, WPF или служба Windows. Возможно ли (или желательно) сделать это таким образом? Каким должен быть тип вывода проекта?

Основная причина заключается в том, что у нас есть автоматические сценарии для запуска, которые ожидают некоторые фиксированные пути к файлам. Я хочу избежать дублирования сценариев для исполняемого файла WPF и исполняемого файла Service/console.

+0

Неужели «автоматические скрипты» всегда хотят вызвать консольное приложение? В этом случае, почему имеет значение, если есть три исполняемых файла? –

+0

Каким образом скрипты ссылаются на исполняемые файлы? –

+0

У нас есть сценарии, которые в основном выполняют операции по обслуживанию файлов: очистка файлов журнала, резервное копирование файлов и т. Д. Эти файлы создаются независимо от того, как было использовано приложение. –

ответ

0

Я не уверен, что в состоянии сделать WPF, но Topshelf позволит запустить исполняемый как консольное приложение или как услуга.

http://topshelf-project.com/

Есть два способа использования Topshelf - exe as a service или using shelving.

Для запуска в качестве консольного приложения вы просто запустите файл yourprogram.exe. Для установки в качестве сервиса это просто программа yourprogram.exe.

0

Я знаю, что этот вопрос немного старый, но ...

Вы можете начать новый проект как проект WPF, а затем щелкните правой кнопкой мыши в обозревателе решений и изменить «Start Как» утешать приложение , Ваше приложение WPF все равно будет работать точно так же, но появится консольное окно, в котором вы можете использовать такие вызовы, как Console.WriteLine().

Затем вы можете принять параметр командной строки, который сообщает вашему приложению о подавлении остальной части пользовательского интерфейса, оставив только часть консоли. Я не думаю, что это позволит ему работать как сервис.

Смежные вопросы