C# 如何使用CSI.exe脚本参数
当您运行csi.exe/?(安装Visual Studio 2015 update 2后),您将获得以下语法C# 如何使用CSI.exe脚本参数,c#,scripting,csi,C#,Scripting,Csi,当您运行csi.exe/?(安装Visual Studio 2015 update 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] ... 我只是想知道
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.csx)只有两行,如下所示
using System;
Console.WriteLine("Hello {0} !", <argument_from_commandLine>);
我会得到
Hello David !
但是我不知道我应该在脚本文件中做什么,这样我就可以将csi.exe[script\u参数]传递给脚本文件(替换)
提前感谢您的时间和帮助。您可以使用
Environment.GetCommandLineArgs()
举个例子:
using System;
Console.WriteLine("Hello {0}!", Environment.GetCommandLineArgs()[2]);
请注意,我正在阅读第三项,因为
Environment.GetCommandLineArgs()
提供了整个命令行(如果使用csi test.csx David
运行脚本,第一项将是csi
,第二项是test.csx
)脚本中有一个名为Args
的全局变量,它具有这些“脚本参数”值。我能找到的最接近文档的东西是在中提到它。在csx文件(test.csx)中:
使用命令行:
csi.exe test.csx arg1
将给出输出:
你好,arg1
另一种使用
Environment.GetCommandLineArgs()
的方法可以发挥作用,但问题是,这会拾取传递给csi进程的所有参数。然后,您必须将“脚本参数”与csi本身的选项分开。这项工作可以通过使用内置的Args变量来避免,该变量也将更易于维护。感谢@zdimension,它看起来是一个解决方案。虽然这可能适用于简单的情况,但如果您希望将多个引用或库选项传递给csi,那么索引将不会是2(甚至在运行之间不一致)。有一种更直接的方法可以访问脚本参数,正如我在回答中所示。这正是我想要的。实际上我尝试过这种方法,但不幸的是,我使用了args[0],即没有大写的args[0],因此出现了错误“名称“args”在当前上下文中不存在”。非常感谢@mike@jyao:我刚刚测试过这个,而且Args[0]
的工作方式和@mikez描述的完全一样。@mikez很酷,看起来很棒!请考虑将上面的答案标记为已接受。
using System;
Console.WriteLine("Hello {0}!", Args[0]);
csi.exe test.csx arg1