2009-01-28 81 views
7

我想在構建解決方案之前用NAnt修改.h文件中的字符串。如何用NAnt修改源文件?

在.h文件中有一個宏:#define SERVER_ADDRESS「www.customserver.net」,我想在部署軟件之前修改字符串,這樣每個構建都可以通過在命令行中傳遞地址來實現自定義地址。

有誰知道這可以做到嗎?

謝謝!

回答

14

可以使用loadfile任務來解決這個問題。此任務將給定文件加載到屬性中。當您應用filterchainreplacetokens替換文件的某些區域時,真正有用的是什麼。例如,如果一個人來定義看起來是這樣的一個類似模板頭文件:

#ifndef MyMacros_h 
#define MyMacros_h 

#define SERVER_ADDRESS "@[email protected]" 

#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的修改字符串。

0

我不認爲這是使用NAnt的正確方法。我不想以這種方式修改文件內容。我不相信這是可能的。

也許你可以爲每種情況有不同的文件,並根據輸入參數指定路徑。

就我個人而言,我認爲這樣的字符串不應該被硬編碼到應用程序中。如果他們要更改,最好將其外部化爲啓動時讀取的配置文件或屬性文件。這樣,您可以更改它們而無需更改源代碼或重新編譯。