15

当你运行 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} !", <argument_from_commandLine>);

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

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

我会得到

Hello David !

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

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

4

2 回答 2

21

脚本中有一个全局变量,Args它具有这些“脚本参数”值。我能找到的最接近文档的是在 roslyn repo 的拉取请求中提到它。在 csx 文件 (test.csx) 中:

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

使用命令行:

csi.exe test.csx arg1

将给出输出:

你好 arg1!

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

于 2016-06-27T19:02:27.453 回答
0

你可以使用Environment.GetCommandLineArgs()它。

您的示例示例:

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

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

于 2016-06-27T18:42:23.463 回答