为什么PowerShell不“理解”响应文件的说明?

时间:2013-09-21 04:18:44

标签: c# .net powershell

我创建了以下响应文件(我遵循本文中的示例:Working with the C# 2.0 Command Line Compiler):

# MyCodeLibraryArgs.rsp
#
# These are the options used
# to compile MyCodeLibrary.dll

# Output target and name.
/t:library 
/out:MyCodeLibrary.dll 

# Location of C# files. 
/recurse:*.cs 

# Give me an XML doc.
/doc:myDoc.xml 

然后我尝试使用PowerShell中的C#编译器(csc.exe)执行它:

csc @MyCodeLibraryArgs.rsp

然后它会生成以下错误:

Cannot expand the splatted variable '@MyCodeLibraryArgs'. Splatted variables 
cannot be used as part of a property or array expression. Assign the result of 
the expression to a temporary variable then splat the temporary variable instead.
At line:1 char:23 + csc @MyCodeLibraryArgs <<<< .rsp
+ CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : NoPropertiesInSplatting

所以,我决定使用提示符(命令行),它可以正常工作。

PowerShell(v.3.0)出现此问题的原因是什么?

提前感谢您的回复和评论。

1 个答案:

答案 0 :(得分:3)

@是PowerShell中用于“splatting”变量的特殊语法。你想逃避@ like so

 csc `@MyCodeLibraryArgs.rsp

Splatting允许您在哈希表中传递cmdlet参数。如果要动态构建要传递的参数,这很方便。如果有很多参数,它也可以更具可读性。有关splatting here的更多信息。