我们的 XL-Release 管道具有带有用于 NLog 配置的字符串的占位符。 NLog 配置具有支持插值的语法,使用与 XL-Release 用于变量的语法相同的语法:
${variablename}
。例如,在 NLog 中,${basedir}
相当于基本目录,${shortdate}
给出当前时间戳字符串。
不幸的是,XL-Release 对这些值进行了变量查找,什么也没找到,并且什么也没有替换掉预期的 NLog 配置文本。
有没有办法转义 NLog 值,以便 XL-Release 不打扰它们?也许是反斜杠?:
\${variablename}
.
例如,我们的查找字典有一个像这样的条目:
"App": {
"ProgramName": {
"ArchiveFilename": "${basedir}/logs/archive/ProgramName-${shortdate}.log",
"Filename": "${basedir}/logs/ProgramName.log"
},
etc...
模板如下所示:
<targets>
<target name="logfile" xsi:type="File" fileName="{{ App.ProgramName.Filename }}"
并且,而不是得到这个:
<targets>
<target name="logfile" xsi:type="File" fileName="${basedir}/logs/ProgramName.log"
我明白了(XL-Release 已掉落
${basedir}
):
<targets>
<target name="logfile" xsi:type="File" fileName="/logs/ProgramName.log"
我怎样才能逃脱
${basedir}
,这样 XL-Release 就不会取代它?
解决此问题的一种方法是定义一个名为 basedir 的文本类型的发布变量,其值为 ${basedir} 并选择 PreventVariableInterpolation 布尔值以禁用嵌套插值。