10

コマンド ライン ウィンドウを開かずにスクリプトがバックグラウンドで実行されるように、Windows で .csx スクリプトを直接起動する方法はありますか (たとえば、ファイルをダブルクリックするか、[スタート] メニューから、または Launchy などのアプリ ランチャーを介して)。

たとえば、単純な "lowercase.csx" スクリプトがあるとします。このスクリプトは、クリップボードにあるテキストを単純に取得し、それを小文字に変換して、結果をクリップボードに戻します。その .csx ファイルをダブルクリックして、ウィンドウを開くことなくバックグラウンドで完全に実行できるようにしたいと考えています。

現在、ScriptCS.exe と VS2015 Update 1 に付属する新しい csi.exe ランチャーの両方で、.csx ファイルを実行すると、そのファイルがコンソールに何も出力しない場合でも、コンソール ウィンドウが開きます。

注: コンソール ウィンドウからスクリプトを起動すると、新しいウィンドウが開かないことはわかっています。コマンドライン以外のコンテキストでスクリプトを起動し、ウィンドウを開かないようにしたい。

注 2: 「CS-Script」(ScriptCS の代替手段) で必要なものと同等のものは、「csws.exe」を使用してファイルを起動することです。

4

4 に答える 4

3

csi.exeコンソールなしで実行される独自のバージョンを作成できます。

新しいプロジェクトを作成し、Type が Console ではなく WinForms に設定されていることを確認してから、NuGet から C# Scripting パッケージを追加し、csi.exe ソース コードをコピーして貼り付けます。

于 2015-12-01T03:02:35.140 に答える
2

回避策は、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);
}

(もちろん、残りの引数を渡し、ファイルが渡されたことを確認する必要がありますが、これで始められるはずです。そして、Windowsボックスが店にあるので、この回答をMacで書きました。動作を保証するものではありません。)

次に、この質問で説明されているように、プロジェクト プロパティ画面でコンソール アプリケーションから Windows アプリケーションに変更して、コンソール アプリケーションにウィンドウを表示させないようにします。

最後に、アプリケーションで常に開くように .csx ファイルを構成します。次に、それらをダブルクリックすると、ウィンドウなしで実行されます。

于 2015-12-01T02:23:09.993 に答える
2

scriptcs はこれをサポートしていません。ただし、この問題を解決するアプリケーションがあります: https://gitlab.com/Lions-Open-Source/ScriptCSW

于 2016-06-06T04:22:04.437 に答える
0

バッチ ファイルを作成して追加します (この例では、VS 2019 用にインストールされた csi.exe に):

@echo off
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn\csi.exe" "C:\myscript.csx"

コマンド プロンプトを非表示にすることが重要な場合は、こちらこちらを参照してください。

于 2020-02-03T08:20:01.107 に答える