如何用NAnt修改源代码?

时间:2009-01-28 12:32:41

标签: .net build-automation nant

我想在构建解决方案之前使用NAnt修改.h文件中的字符串。

.h文件中有一个宏:#define SERVER_ADDRESS“www.customserver.net”我想在部署软件之前修改字符串,这样每个构建都可以通过在命令行中传递地址来制作自定义地址。

有谁知道如何做到这一点?

谢谢!

2 个答案:

答案 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的正确方法。我不希望以这种方式修改文件内容。我不相信这是可能的。

也许你可以为每种情况设置一个不同的文件,并根据输入参数指定它的路径。

就个人而言,我认为这样的字符串不应该硬编码到应用程序中。如果他们要改变,最好将它们外部化为在启动时读取的配置或属性文件。这样您就可以更改它们而无需更改源代码或重新编译。