在脚本中更新 属性
Update property in a script
在我的 NAnt 脚本中我有一个 属性:
<property name="changed.assemblyinfo" value="false" unless="${property::exists('changed.assemblyinfo')}" />
可以使用 -D
开关从命令行设置 属性,如下所示,效果很好:
-D:changed.assemblyinfo=true
但是,我还希望能够根据脚本中的某些逻辑从脚本本身更新 属性,即:
<property name="changed.assemblyinfo" value="true" />
但是,每次执行此操作时都会出现错误:
Read-only property "changed.assemblyinfo" cannot be overwritten
如何在脚本中设置 属性?
当您在命令行中传递 属性 时,它将被视为只读 属性。来自 the docs:
iii. Define a read-only property. This is just like passing in the param on the command line.
<property name="do_not_touch_ME" value="hammer" readonly="true" />
这意味着您无法更新它。在你的情况下,如果你们都需要能够从命令行提供它并根据逻辑更新它意味着你需要在命令行上提供一个使用不同名称的默认值,例如:
<property name="changed.assemblyinfo.default" value="false" unless="${property::exists('changed.assemblyinfo.default')}" />
<property name="changed.assemblyinfo" value="${changed.assemblyinfo.default}" />
所以现在 changed.assemblyinfo
将包含默认值 changed.assemblyinfo.default
或在命令行中传递的值,同时您可以正常覆盖它:
<property name="changed.assemblyinfo" value="true" />
在我的 NAnt 脚本中我有一个 属性:
<property name="changed.assemblyinfo" value="false" unless="${property::exists('changed.assemblyinfo')}" />
可以使用 -D
开关从命令行设置 属性,如下所示,效果很好:
-D:changed.assemblyinfo=true
但是,我还希望能够根据脚本中的某些逻辑从脚本本身更新 属性,即:
<property name="changed.assemblyinfo" value="true" />
但是,每次执行此操作时都会出现错误:
Read-only property "changed.assemblyinfo" cannot be overwritten
如何在脚本中设置 属性?
当您在命令行中传递 属性 时,它将被视为只读 属性。来自 the docs:
iii. Define a read-only property. This is just like passing in the param on the command line.
<property name="do_not_touch_ME" value="hammer" readonly="true" />
这意味着您无法更新它。在你的情况下,如果你们都需要能够从命令行提供它并根据逻辑更新它意味着你需要在命令行上提供一个使用不同名称的默认值,例如:
<property name="changed.assemblyinfo.default" value="false" unless="${property::exists('changed.assemblyinfo.default')}" />
<property name="changed.assemblyinfo" value="${changed.assemblyinfo.default}" />
所以现在 changed.assemblyinfo
将包含默认值 changed.assemblyinfo.default
或在命令行中传递的值,同时您可以正常覆盖它:
<property name="changed.assemblyinfo" value="true" />