我想在构建解决方案之前使用NAnt修改.h文件中的字符串。
.h文件中有一个宏:#define SERVER_ADDRESS“www.customserver.net”我想在部署软件之前修改字符串,这样每个构建都可以通过在命令行中传递地址来制作自定义地址。
有谁知道如何做到这一点?
谢谢!
答案 0 :(得分:14)
可以使用loadfile任务来帮助解决这个问题。此任务将给定文件加载到属性中。当您使用filterchain replacetokens来替换文件的某些区域时,真正有用的是什么。例如,如果要定义一个类似于模板的头文件:
#ifndef MyMacros_h
#define MyMacros_h
#define SERVER_ADDRESS "@SERVER_ADDRESS_TOKEN@"
#endif
可以使用loadfile任务用任何字符串替换@ SERVER_ADDRESS_TOKEN @,然后使用echo任务实际写回真实头文件。
<loadfile file="MyMacrosTemplate.h" property="theMacrosFileContents">
<filterchain>
<replacetokens>
<token key="SERVER_ADDRESS_TOKEN" value="www.customerserver.net" />
</replacetokens>
</filterchain>
</loadfile>
<echo file="MyMacros.h" message="${theMacrosFileContents}" />
这将生成一个MyMacros.h文件,其中包含SERVER_ADDRESS的修改后的字符串。
答案 1 :(得分:0)
我认为这不是使用NAnt的正确方法。我不希望以这种方式修改文件内容。我不相信这是可能的。
也许你可以为每种情况设置一个不同的文件,并根据输入参数指定它的路径。
就个人而言,我认为这样的字符串不应该硬编码到应用程序中。如果他们要改变,最好将它们外部化为在启动时读取的配置或属性文件。这样您就可以更改它们而无需更改源代码或重新编译。