2009-01-28 13 views
7

Ich möchte die Zeichenfolge in einer .h-Datei mit NAnt vor dem Erstellen der Lösung ändern.Wie ändert man die Quelle mit NAnt?

Es gibt ein Makro in .h Datei: #define SERVER_ADDRESS "www.customserver.net" und ich möchte die Zeichenfolge vor dem Bereitstellen von Software ändern, damit jeder Build für benutzerdefinierte Adresse durch Übergeben der Adresse in der Befehlszeile erstellt werden kann .

Weiß jemand, wie das gemacht werden könnte?

Danke!

Antwort

14

Man könnte die loadfile Aufgabe verwenden, um damit zu helfen. Diese Aufgabe lädt die angegebene Datei in eine Eigenschaft. Was wirklich nützlich ist, ist, wenn Sie eine filterchain mit replacetokens anwenden, um bestimmte Bereiche der Datei zu ersetzen. Zum Beispiel, wenn man eine schablonen wie Header-Datei definieren waren, die ungefähr so ​​aussah:

#ifndef MyMacros_h 
#define MyMacros_h 

#define SERVER_ADDRESS "@[email protected]" 

#endif 

Man könnte die Verwendung der Loadfile Aufgabe, die @ SERVER_ADDRESS_TOKEN @ mit einer beliebigen Zeichenkette, und verwenden Sie dann den echo ersetzen Aufgabe, tatsächlich die echte Header Datei wieder zu schreiben.

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

Dies wird eine MyMacros.h-Datei mit der geänderten Zeichenfolge für die SERVER_ADDRESS generieren.

0

Ich denke nicht, dass das der richtige Weg ist, NAnt zu benutzen. Ich würde den Dateiinhalt nicht auf diese Weise ändern wollen. Ich glaube nicht, dass es möglich ist.

Vielleicht können Sie für jeden Fall eine andere Datei verwenden und den Pfad zu diesem abhängig von einem Eingabeparameter angeben.

Persönlich denke ich, dass Strings wie diese nicht fest in die App codiert werden sollten. Wenn sie sich ändern, sollten sie besser in Konfigurations- oder Eigenschaftendateien ausgelagert werden, die beim Start gelesen werden. Auf diese Weise können Sie sie ändern, ohne die Quelle ändern oder neu kompilieren zu müssen.

Verwandte Themen