直接启动.csx(scriptcs)C#脚本,无需打开命令行窗口

时间:2015-12-01 02:11:37

标签: c# windows scriptcs csx

在Windows中是否有办法直接启动.csx脚本(例如,双击文件,或从开始菜单,或通过Launchy等应用程序启动程序),以便脚本在后台运行而无需打开命令行窗口?

例如,假设我有一个简单的“lowercase.csx”脚本,它只需要剪贴板中的任何文本,将其转换为小写,然后将结果放回剪贴板中。我希望能够双击该.csx文件,并在不打开任何窗口的情况下完全在后台运行。

目前,运行.csx文件时,ScriptCS.exe和VS2015 Update 1附带的新csi.exe启动程序都会打开一个控制台窗口,即使该文件没有向控制台输出任何内容。

注意:我知道如果从控制台窗口启动脚本,则不会打开新窗口。我想在非命令行上下文中启动脚本并让它打开没有窗口。

注意2:在“CS-Script”(ScriptCS替代方案)中,我想要的是使用“csws.exe”启动文件。

4 个答案:

答案 0 :(得分:3)

您可以创建自己的csi.exe版本,无需控制台即可运行。

只需创建一个新项目,确保将Type设置为WinForms而不是Console,然后从NuGet添加C#Scripting包并复制粘贴csi.exe source code

答案 1 :(得分: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);
}

(你显然想要传递其余的参数并检查以确保文件已通过等,但这应该让你开始。我在Mac上写了这个答案,因为我的Windows框在商店,所以我无法保证它能够正常运作。)

然后让控制台应用程序不显示窗口,方法是在项目属性屏幕上从控制台应用程序将其更改为Windows应用程序,如this question中所述。

最后,将.csx文件配置为始终与您的应用程序一起打开。然后你可以双击它们,它们将在没有窗口的情况下运行。

答案 2 :(得分:1)

scriptcs不支持此功能。 但是有一个应用程序可以解决这个问题:https://gitlab.com/Lions-Open-Source/ScriptCSW

答案 3 :(得分: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"

如果隐藏命令提示符很重要,请参见herehere