在Windows中是否有办法直接启动.csx脚本(例如,双击文件,或从开始菜单,或通过Launchy等应用程序启动程序),以便脚本在后台运行而无需打开命令行窗口?
例如,假设我有一个简单的“lowercase.csx”脚本,它只需要剪贴板中的任何文本,将其转换为小写,然后将结果放回剪贴板中。我希望能够双击该.csx文件,并在不打开任何窗口的情况下完全在后台运行。
目前,运行.csx文件时,ScriptCS.exe和VS2015 Update 1附带的新csi.exe启动程序都会打开一个控制台窗口,即使该文件没有向控制台输出任何内容。
注意:我知道如果从控制台窗口启动脚本,则不会打开新窗口。我想在非命令行上下文中启动脚本并让它打开没有窗口。
注意2:在“CS-Script”(ScriptCS替代方案)中,我想要的是使用“csws.exe”启动文件。
答案 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)