2011-05-24 2 views
0

J'utilise la version nant 0.85. J'ai défini une propriété dans un fichier et n'ai pas spécifié comme 'true only' true. "Mais où que j'essaie de changer la valeur de la propriété, j'obtiens l'avertissement disant que la propriété ne peut pas être écraséeLa propriété Nant ne peut pas être écrasée même si elle n'est pas marquée comme étant en lecture seule

I ont tenté de mettre readonly="false" overwrite="true" rien .Mais semble fonctionner. Toute aide serait grandement appréciée.

+0

Afficher quelques exemples de code, comment vous surchargez etc. – manojlds

+0

Aussi, essayez NAnt 0,90 ou 0.91_alpha, vous utilisez version a été publié en 2006! – skolima

+0

Je n'ai aucune propriété de ligne de commande. Je cours cette construction nant de Cruisecontrol.net. Les propriétés sont dans un fichier et j'inclus ces propriétés en utilisant include. Bien que je ne spécifie pas ces propriétés en lecture seule, lorsqu'elles sont incluses dans le fichier de construction, elles sont incluses en lecture seule. Puis j'ai essayé de déplacer le contenu du fichier d'inclusion où j'avais les propriétés dans le même fichier de construction nant. Mais aucune idée où il définit les propriétés :(. – priya

Répondre

9

Besoin de précisions, surtout si vous « modifiez la valeur de la propriété » de la ligne de commande.

Une chose que j'ai vu que provoque une certaine confusion est que lorsque la propriété est substituée à partir de la ligne de commande (-D:prop=value), et si la même propriété est définie dans le fichier (<property name="prop" value="value"/>) il indiquera que la propriété read only ne peut pas être substituée car la propriété définie à partir de la ligne de commande est en lecture seule et ne peut pas être remplacée par la propriété définie dans le fichier.

Ce n'est pas le contraire, ce qui provoque une certaine confusion et les gens pensent que même si aucun readonly n'a été défini comme vrai, etc., cela ne peut pas être ignoré. Essayez donc de voir si la propriété que vous définissez utilise réellement la valeur que vous vouliez, si vous remplacez la ligne de commande.

3

Vous pouvez totalement faire cela dans NAnt 0.85. Disons par exemple que vous avez une propriété avec le nom "myvalue" que vous voulez pouvoir passer à partir de la ligne de commande. Vous devez d'abord définir la propriété dans votre script NAnt comme ceci:

<property name="myvalue" value="0" overwrite="false" /> 

Lorsque vous appelez NAnt il vous suffit d'utiliser le paramètre -D pour passer dans votre nouvelle valeur comme ceci:

nant.exe buildfile:myfile.build -logfile:mylog.log -D:myvalue=16 

Et votre nouvelle valeur de « 16 » sera reconnu dans votre script de compilation que vous pouvez tester en faisant écho à simplement la valeur comme ceci:

<echo message="myvalue: ${myvalue}" /> 

Pour plus d'informations, vous pouvez lire la documentation et regarder exa mple "iv":

http://nant.sourceforge.net/release/0.85/help/tasks/property.html

10

utilisation à moins attribut, il fonctionne.

<property name="msbuild.path" value="CONFIGURABLE" unless="${property::exists('msbuild.path')}" /> 

puis comme d'habitude Nant -D: msbuild.path = ...

Questions connexes