在不打开命令行的情况下直接启动 .csx (scriptcs) C# 脚本 window

Launch a .csx (scriptcs) C# script directly without opening a command line window

在 Windows 中有没有一种方法可以直接启动 .csx 脚本(例如,通过双击文件,或从开始菜单,或通过像 Launchy 这样的应用程序启动器),这样脚本 运行s 在后台没有打开命令行 window?

例如,假设我有一个简单的 "lowercase.csx" 脚本,它只获取剪贴板中的任何文本,将其转换为小写,然后将结果放回剪贴板。我希望能够双击该 .csx 文件并在不打开任何类型的 window.

的情况下将 运行 完全置于后台

目前 ScriptCS.exe 和 VS2015 Update 1 附带的新 csi.exe 启动器都会在 运行 .csx 文件时打开控制台 window,即使该文件不会向控制台输出任何内容。

注意:我知道如果您从控制台 window 启动脚本,则不会打开新的 window。我想在非命令行上下文中启动脚本并打开它 windows.

注意 2:我在 "CS-Script"(一种 ScriptCS 替代方案)中想要的等效项是使用 "csws.exe".

启动文件

解决方法是创建您自己的程序,在后台为您启动它,就像 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 应用程序,让控制台应用程序不显示 window,如 this question.[=12 中所述=]

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

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

只需创建一个新项目,确保类型设置为 WinForms 而不是控制台,然后从 NuGet 添加 C# 脚本包并复制粘贴 csi.exe source code

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

创建一个批处理文件并添加(在此示例中添加到为 VS 2019 安装的 csi.exe):

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

如果隐藏命令提示符很重要,请参阅 here and here