我试图使用Nant替换wxs文件中字符串的出现.
我只找到了以下使用的示例, <replaceString>但似乎它只能在复制的文件中使用.有没有其他方法来替换字符串,而不实际复制文件?
<property name="NOW" value="${datetime::now()}" />
<copy todir="out">
<fileset basedir="in">
<include name="**/*" />
</fileset>
<filterchain>
<replacetokens>
<token key="NOW" value="${TODAY}" />
</replacetokens>
<tabstospaces />
</filterchain>
</copy>
Run Code Online (Sandbox Code Playgroud)
这是代码:
<loadfile file="token.txt" property="token-file">
<filterchain>
<replacetokens>
<token key="NOW" value="${datetime::now()}" />
</replacetokens>
</filterchain>
</loadfile>
Run Code Online (Sandbox Code Playgroud)
<loadfile>元素的官方NAnt文档包含您需要的确切样本.请参见页面底部.
这就是我做到的.
<loadfile file="${file}" property="file.content">
<filterchain>
<replacestring from="StringToMatch" to="StringToReplace" ignorecase="true" />
</filterchain>
</loadfile>
<echo file="${file}">${file.content}</echo>
Run Code Online (Sandbox Code Playgroud)
我在这里为您找到了解决方案: http://frank.overeakids.com/ ?p=182
\n\n<loadfile file=\xe2\x80\x9d${dir.template}\\template.db_name.sql\xe2\x80\x9d property=\xe2\x80\x9drestore.db.sql.db_name\xe2\x80\x9d>\n<filterchain>\n<replacetokens>\n<!\xe2\x80\x93 this looks for tokens like @blah.blah@ in the file being loaded and replaces them\xe2\x80\x93>\n<token key=\xe2\x80\x9drestore.db.prefix\xe2\x80\x9d value=\xe2\x80\x9d${restore.db.prefix}\xe2\x80\x9d />\n<token key=\xe2\x80\x9dbackup.file.path\xe2\x80\x9d value=\xe2\x80\x9d${backup.file.path}\xe2\x80\x9d />\n</replacetokens>\n</filterchain>\n</loadfile>\n<property name=\xe2\x80\x9dcurrent.db\xe2\x80\x9d value=\xe2\x80\x9ddb_name\xe2\x80\x9d />\n<property name=\xe2\x80\x9dcurrent.log\xe2\x80\x9d value=\xe2\x80\x9d${dir.log}\\${restore.db.logfile.prefix}_db_name.log\xe2\x80\x9d />\n<property name=\xe2\x80\x9dcurrent.file\xe2\x80\x9d value=\xe2\x80\x9d${dir.template}\\restore.db_name.tmp.sql\xe2\x80\x9d />\n<delete if=\xe2\x80\x9d${file::exists(current.file)}\xe2\x80\x9d file=\xe2\x80\x9d${current.file}\xe2\x80\x9d />\n<echo file=\xe2\x80\x9d${current.file}\xe2\x80\x9d>${restore.db.sql.db_name}</echo>\nRun Code Online (Sandbox Code Playgroud)\n\n您可以将其包装在一个<foreach />元素中。