在不打开命令行的情况下直接启动 .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"
在 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"