Hei*_*nzi 15 .net c# vb.net command-line-arguments
问题:给定文件名和任意字符串列表,是否有一种规范的方法来创建单个命令行,以便Environment.GetCommandLineArgs(和C#的void main(String[] args)/ VB Sub Main(args() As String))将返回相同的字符串列表?
背景:.NET将命令行拆分为参数的方式非常复杂,例如:
如果双引号跟随两个或偶数个反斜杠,则每个前进的反斜杠对将替换为一个反斜杠,并删除双引号.如果双引号跟随奇数个反斜杠(包括只有一个),则每个前一对用一个反斜杠替换,剩下的反斜杠被删除; 但是,在这种情况下,双引号不会被删除.
许多人尝试简单的"将每个参数放在双引号中并转义现有的双引号"方法,并且只要其中一个参数包含一个尾部反斜杠就会失败.有关此问题的StackOverflow存在各种问题,例如:
然而,他们的答案要么不够通用,不能为所有案例提供规范解决方案,要么似乎是"迭代地"开发("哦,还有一个我忘了的特殊情况,让我们添加它,现在它应该覆盖大多数情况...... ").由于这是一个非常常见的问题,我希望看到一个解决方案,例如,通过其中任何一个提供信心
几年前,Microsoft 宣布他们将在 CodePlex 上发布命令行解析器(而不是原本应随 .NET Framework 4 附带的 System.Shell.CommandLine)。我不确定他们是否真的这么做了。如果您想要由 Microsoft 员工开发的解析器,请查看cmdline。您还可以在CodePlex中查找命令行解析。
您还可以尝试Mono.Options,它非常强大。
| 归档时间: |
|
| 查看次数: |
2833 次 |
| 最近记录: |