Запустите C # скрипт (scriptcs) C # напрямую, не открывая окно командной строки

Есть ли в Windows способ запустить скрипт .csx напрямую (например, дважды щелкнув файл, или из меню «Пуск», или через панель запуска приложений, например Launchy), чтобы скрипт работал в фоновом режиме, не открывая команду окно строки?

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

В настоящее время и ScriptCS.exe, и новый модуль запуска csi.exe, который поставляется с обновлением 1 VS2015, откроют окно консоли при запуске файла .csx, даже если этот файл ничего не выводит на консоль.

Примечание: я знаю, что новое окно не открывается, если вы запускаете скрипт из окна консоли. То, что я хочу, чтобы запустить скрипт в контексте без командной строки и открыть его без окон.

Примечание 2: Эквивалентом того, что я хочу в «CS-Script» (альтернатива ScriptCS), является запуск файлов с использованием «csws.exe».

7 голосов | спросил ivanatpr 1 TueEurope/Moscow2015-12-01T05:11:37+03:00Europe/Moscow12bEurope/MoscowTue, 01 Dec 2015 05:11:37 +0300 2015, 05:11:37

3 ответа


0

scriptcs не поддерживает это. Однако есть приложение, решающее эту проблему: https://gitlab.com/Lions-Open-Source /ScriptCSW

ответил Alex 6 J0000006Europe/Moscow 2016, 07:22:04
0

Вы можете создать собственную версию csi.exe, которая работает без консоли.

Просто создайте новый проект, убедитесь, что для Type задано WinForms вместо Console, затем добавьте пакет сценариев C # из NuGet и скопируйте и вставьте исходный код csi.exe .

ответил SLaks 1 TueEurope/Moscow2015-12-01T06:02:35+03:00Europe/Moscow12bEurope/MoscowTue, 01 Dec 2015 06:02:35 +0300 2015, 06:02:35
0

Обходной путь - создать собственную программу, которая запускает ее в фоновом режиме, как csws.exe.

Начните с создания консольного приложения.

public static void Main(string[] args)
{
    var startInfo = new ProcessStartInfo("path to csi.exe")
    {
        CreateNoWindow = true,
        Arguments = args[1],
        RedirectStandardOutput = true,
        UseShellExecute = false,
    };
    Process.Start(startInfo);
}

(Вы, очевидно, захотите передать остальные аргументы и убедиться, что файл был передан и т. д., но это должно помочь вам начать работу. И я написал этот ответ на своем Mac, так как моя коробка с Windows находится в магазине , поэтому я не могу гарантировать, что это сработает.)

Затем пусть консольное приложение не отображает окно, изменив его на Windows-приложение из консольного приложения на экране свойств проекта, как описано в этот вопрос .

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

ответил mason 1 TueEurope/Moscow2015-12-01T05:23:09+03:00Europe/Moscow12bEurope/MoscowTue, 01 Dec 2015 05:23:09 +0300 2015, 05:23:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132