如何在 MSBuild 的 Exec 命令中转义引号
Posted
技术标签:
【中文标题】如何在 MSBuild 的 Exec 命令中转义引号【英文标题】:How to escape quote marks in Exec Command in MSBuild 【发布时间】:2011-01-25 17:20:48 【问题描述】:我正在尝试构建一个 MSBuild 脚本,将网络驱动器映射到脚本中的驱动器号,但不幸的是,目标文件夹的路径包含一个嵌入空间。嵌入的空间导致映射失败,不知道是否可以转义路径周围的引号。我试过双引号,但 MSBuild 不喜欢它(或者 Windows XP 不喜欢它)。任何人都知道如何为这个野兽编码以便地图工作?
<Exec Command="net use x: \\ofmapoly703\c$\program files\ar\iap /user:$(UserID) $(Password)"
WorkingDirectory="c:\"
ContinueOnError="false"
/>
嵌入空间当然出现在“程序文件”中。
【问题讨论】:
【参考方案1】:使用&quot;
对您希望net
在Command
属性值内看到的双引号进行编码:
<Exec Command="net use x: "\\ofmapoly703\c$\program files\ar\iap" /user:$(UserID) $(Password)"
WorkingDirectory="c:\"
ContinueOnError="false"
/>
【讨论】:
这在你有Command="quot;$(PathWithTrailingBackslash)&quot;"
时没有帮助,因为它呈现为"Path\With\Trailing\Backslash\"
,而\"
是"
的命令行转义序列,所以后面的所有参数都会搞砸。
@jnm2 你不能在第二个之后再添加一个&quot;
吗? Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
@TetraDev 然后反斜杠仍然丢失,并且您有一个未闭合的引号,我不太确定它的效果。【参考方案2】:
命令可以使用单引号,例如
<Exec Command='explorer.exe "$(DestinationDir)"' IgnoreExitCode="true" />
(来自MSBuild exec task without blocking)
【讨论】:
对我来说使用单引号而不是 "这是一个更好的解决方案。因为“。当您尝试执行 XmlPoke 时,这可能会导致问题,它会以一种有趣的方式分隔字符:从 "到"以上是关于如何在 MSBuild 的 Exec 命令中转义引号的主要内容,如果未能解决你的问题,请参考以下文章
如何找出Visual Studio发送给MSBuild的命令?
如何通过命令行在 MSBuild 中指定 CodeAnalysisRuleset
MSBuild:如何将文件复制到由执行命令的输出确定的 DestinationFolder?