[英]Nant property cannot be overwritten eventhough not marked as readonly
我正在使用 nant 0.85 版本。 我已经在一个文件中定义了一个属性,并且没有指定像'read only = true'。但是无论何时我尝试更改属性的值,我都会收到警告说,属性不能被覆盖。
我尝试设置readonly="false" overwrite="true"
。但似乎没有任何效果。 任何帮助将不胜感激。
使用除非属性,它的工作原理。
<property name="msbuild.path" value="CONFIGURABLE" unless="${property::exists('msbuild.path')}" />
然后像往常一样 nant -D:msbuild.path=...
需要更多详细信息,特别是如果您从命令行“更改属性的值”。
我看到的引起一些混乱的一件事是,当从命令行( -D:prop=value
)覆盖属性时,并且如果在文件中定义了相同的属性( <property name="prop" value="value"/>
) 它会说只读属性不能被覆盖,因为从命令行设置的属性是只读的,它不能被文件中定义的属性覆盖。
这不是相反的方式,这会引起一些混乱,人们认为尽管没有将readonly
设置为 true 等,但仍然说不能被覆盖。
因此,如果您从命令行覆盖,请尝试查看您设置的属性是否实际上使用了您想要的值。
你完全可以在 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.