Свойство Nant нельзя перезаписать, даже если оно не помечено как доступное только для чтения. - PullRequest
1 голос
/ 24 мая 2011

Я использую версию nant 0.85.Я определил свойство в файле и не указал как «read only = true». Но когда бы я ни пытался изменить значение свойства, я получаю предупреждение о том, что свойство нельзя перезаписать.

Я попытался установить readonly="false" overwrite="true". Но, похоже, ничего не работает. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

11 голосов
/ 13 сентября 2011

используйте , если атрибут, он работает.

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

тогда как обычно nant -D: msbuild.path = ...

10 голосов
/ 24 мая 2011

Нужно больше подробностей, особенно если вы «меняете значение свойства» из командной строки.

Одна вещь, которая, как я видел, вызывает некоторую путаницу, состоит в том, что, когда свойство переопределяется из командной строки (-D:prop=value), и если то же свойство определено в файле (<property name="prop" value="value"/>), оно скажетСвойство только для чтения не может быть переопределено, потому что свойство, установленное из командной строки, доступно только для чтения и не может быть переопределено свойством, определенным в файле.

Это не наоборот, что вызывает некоторую путаницу, и люди думают, что, несмотря на то, что readonly не установлен в true и т. Д., Все же говорят, что это нельзя переопределить.

Так что попробуйтезаданное вами свойство фактически использует требуемое значение, если вы переопределяете его из командной строки.

3 голосов
/ 29 июня 2011

Вы можете сделать это полностью в NAnt 0.85.Скажем, например, у вас есть свойство с именем «myvalue», которое вы хотите, чтобы его можно было передавать из командной строки.Сначала вы должны определить свойство в вашем сценарии NAnt следующим образом:

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

Когда вы вызываете NAnt, вам просто нужно использовать параметр -D для передачи вашего нового значения следующим образом:

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

И ваше новое значение «16» будет распознано в вашем скрипте сборки, который вы можете протестировать, просто повторив это значение следующим образом:

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

Для получения дополнительной информации вы можете прочитать документацию и посмотреть например "iv":

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

...