如何使用CSI.exe脚本参数

当你运行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] ... 

我只是想知道如何将这个[ script-argument ]传递给我的csx脚本文件。 比方说,我的csx脚本(c:\ temp \ a.csx)只有2行,如下所示

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

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

 csi.exe c:\temp\a.csx David 

我会得到

 Hello David ! 

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

在此先感谢您的时间和帮助。

脚本中有一个名为Args的全局变量,它具有这些“脚本参数”值。 我可以找到最接近文档的内容是在roslyn repo的pull请求中提到它。 在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