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 设置为 WinForms 而不是 Console,然后从 NuGet 添加 C# Scripting 包并复制粘贴csi.exe 源代码

于 2015-12-01T03:02:35.140 回答
2

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

于 2016-06-06T04:22:04.437 回答
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 应用程序,使控制台应用程序不显示窗口。

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

于 2015-12-01T02:23:09.993 回答
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 回答