如何使用CSI.exe脚本参数

jya*_*yao 13 c# scripting csi

当你运行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] ...
Run Code Online (Sandbox Code Playgroud)

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

using System;
Console.WriteLine("Hello {0} !", <argument_from_commandLine>);
Run Code Online (Sandbox Code Playgroud)

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

csi.exe c:\temp\a.csx David
Run Code Online (Sandbox Code Playgroud)

我会得到

Hello David !
Run Code Online (Sandbox Code Playgroud)

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

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

Mik*_*ray 19

脚本中有一个全局变量,Args它具有这些"脚本参数"值.我可以找到最接近文档的内容是在roslyn repo的pull请求中提到它.在csx文件(test.csx)中:

using System;
Console.WriteLine("Hello {0}!", Args[0]);
Run Code Online (Sandbox Code Playgroud)

使用命令行:

csi.exe test.csx arg1
Run Code Online (Sandbox Code Playgroud)

会给出输出:

你好arg1!

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