2009-01-28 8 views
7

Je voudrais modifier la chaîne dans un fichier .h avec NAnt avant de construire la solution.comment modifier la source avec NAnt?

Il y a une macro dans le fichier .h: #define SERVER_ADDRESS "www.customserver.net" et je voudrais modifier la chaîne avant de déployer le logiciel afin que chaque construction puisse être faite pour l'adresse personnalisée en passant l'adresse en ligne de commande .

Est-ce que quelqu'un sait comment cela pourrait être fait?

Merci!

Répondre

14

Vous pouvez utiliser la tâche loadfile pour résoudre ce problème. Cette tâche charge le fichier donné dans une propriété. Ce qui est vraiment utile, c'est quand vous appliquez un filterchain avec replacetokens pour remplacer certaines zones du fichier. Par exemple, si l'on devait définir un fichier d'en-tête modèle comme qui avait l'air quelque chose comme ceci:

#ifndef MyMacros_h 
#define MyMacros_h 

#define SERVER_ADDRESS "@[email protected]" 

#endif 

On pourrait l'utiliser la tâche loadfile pour remplacer le @ SERVER_ADDRESS_TOKEN @ avec une chaîne, puis utilisez la echo tâche d'écrire réellement le réel en-tête fichier arrière.

<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}" /> 

Cela générera un fichier MyMacros.h avec la chaîne modifiée pour SERVER_ADDRESS.

0

Je ne pense pas que ce soit la bonne façon d'utiliser NAnt. Je ne voudrais pas modifier le contenu du fichier de cette façon. Je ne crois pas que ce soit possible.

Peut-être que vous pouvez avoir un fichier différent pour chaque cas et spécifier le chemin d'accès en fonction d'un paramètre d'entrée. Personnellement, je pense que les chaînes comme ça ne devraient pas être codées en dur dans l'application. S'ils vont changer, il vaut mieux les externaliser dans des fichiers de configuration ou de propriétés lus au démarrage. De cette façon, vous pouvez les changer sans avoir à changer de source ou de recompiler.