Visual studio 2013 如何在预构建步骤中避开美元符号

Visual studio 2013 如何在预构建步骤中避开美元符号,visual-studio-2013,Visual Studio 2013,我正在与VisualStudio进行斗争,以便在预构建步骤中正确地避开美元符号($)。我们的目标是提供一个变量名作为literal。VS不应尝试处理变量名 声明应使用%xx(其中xx是字符的十六进制值) 我尝试了以下方法: %24(var.Data.WebHost.ProjectDir) 但结果是 4(var.Data.WebHost.ProjectDir) 而不是 $(var.Data.WebHost.ProjectDir) 我做错了什么 更新1:正确的语法是将$符号放在双引号之间 "$

我正在与VisualStudio进行斗争,以便在预构建步骤中正确地避开美元符号($)。我们的目标是提供一个变量名作为literal。VS不应尝试处理变量名

声明应使用%xx(其中xx是字符的十六进制值)

我尝试了以下方法:

%24(var.Data.WebHost.ProjectDir)
但结果是

4(var.Data.WebHost.ProjectDir)
而不是

$(var.Data.WebHost.ProjectDir)
我做错了什么

更新1:正确的语法是将$符号放在双引号之间

"$"(var.Data.WebHost.ProjectDir)

是答案。

使用文档中的方法的替代方法是:

%2524(var.Data.WebHost.ProjectDir)
%25
执行
%
,而剩余的
24
将被追加,形成
%24
,从而在输出代码中转换为
$(任意)

“$”
方法对我不起作用,因为我正在编写一个osx兼容的后期构建事件(针对mono 5),所以我需要这样的东西:

if [ "$(uname)" == "Darwin" ]; then (...)
而输出,
“$”(uname)
对我不起作用


我希望这个迟来的答案对将来的任何人都有帮助(因为到目前为止,谷歌似乎没有太多关于这个问题的信息)。

问题是,你得到了你想要的,MSBuild确实没有处理变量名。因此%24(yadayada)被复制到预生成事件中。由命令处理器Cmd.exe执行。它专门处理%2,用第二个命令参数替换它。没有什么。您确实希望MSBuild展开该变量。