如何使用CSI.exe脚本参数

本文关键字:脚本 参数 exe CSI 何使用 | 更新日期: 2023-09-27 17:51:19

运行csi.exe/?(安装了Visual Studio 2015更新2),你会得到以下语法

Microsoft (R) Visual C# Interactive Compiler version 1.2.0.51106
Copyright (C) Microsoft Corporation. All rights reserved.
Usage: csi [option] ... [script-file.csx] [script-argument] ...

我只是想知道我怎么能传递这个[脚本参数]到我的csx脚本文件。比方说,我的csx脚本(c:'temp'a.c csx)只有2行,如下所示

using System;
Console.WriteLine("Hello {0} !", <argument_from_commandLine>);

我期望的是在我运行以下命令行

之后
csi.exe c:'temp'a.csx David

我将得到

Hello David !

但我只是不知道我应该在我的脚本文件中做什么,所以我可以通过csi.exe [script_argument]到我的脚本文件(替换)。

提前感谢您的时间和帮助。

如何使用CSI.exe脚本参数

脚本中有一个名为Args的全局变量,它具有这些"脚本参数"值。我能找到的最接近文档的东西是在roslyn repo的pull requests中提到的。在csx文件中(test.csx):

using System;
Console.WriteLine("Hello {0}!", Args[0]);

命令行:

csi.exe test.csx arg1

将给出如下输出:

你好__arg1 !

使用Environment.GetCommandLineArgs()的另一种方法可以工作,但问题是这会拾取传递给csi进程的所有参数。然后,您必须将"脚本参数"与csi本身的选项分开。这些工作可以通过使用内置的Args变量来避免,它也将更易于维护。

您可以使用Environment.GetCommandLineArgs()

示例:

using System;
Console.WriteLine("Hello {0}!", Environment.GetCommandLineArgs()[2]);

请注意,我正在阅读第三项,因为Environment.GetCommandLineArgs()给出了整个命令行(如果使用csi test.csx David运行脚本,第一个将是csi,第二个是test.csx)