即使未标记为只读,也无法覆盖Nant属性

即使未标记为只读,也无法覆盖Nant属性,nant,Nant,我使用的是nant 0.85版本。我在一个文件中定义了一个属性,并没有像'read only=true'那样指定。但是,每当我试图更改属性的值时,我都会收到警告,说属性不能被覆盖 我尝试过设置readonly=“false”overwrite=“true”。但似乎没有任何效果。非常感谢您的帮助。需要更多详细信息,特别是如果您从命令行“更改属性的值” 我看到的一件引起一些混淆的事情是,当从命令行重写属性时(-D:prop=value),如果在文件中定义了相同的属性()它会说只读属性不能被重写,因为

我使用的是nant 0.85版本。我在一个文件中定义了一个属性,并没有像'read only=true'那样指定。但是,每当我试图更改属性的值时,我都会收到警告,说属性不能被覆盖


我尝试过设置
readonly=“false”overwrite=“true”
。但似乎没有任何效果。非常感谢您的帮助。

需要更多详细信息,特别是如果您从命令行“更改属性的值”

我看到的一件引起一些混淆的事情是,当从命令行重写属性时(
-D:prop=value
),如果在文件中定义了相同的属性(
)它会说只读属性不能被重写,因为从命令行设置的属性是只读的,并且不能被文件中定义的属性重写

但情况并非如此,这导致了一些混乱,人们认为,尽管将no
readonly
设置为true等,但仍然说不能被覆盖


因此,如果从命令行重写,请尝试查看设置的属性是否实际使用了所需的值。

需要更多详细信息,特别是如果从命令行“更改属性值”

我看到的一件引起一些混淆的事情是,当从命令行重写属性时(
-D:prop=value
),如果在文件中定义了相同的属性(
)它会说只读属性不能被重写,因为从命令行设置的属性是只读的,并且不能被文件中定义的属性重写

但情况并非如此,这导致了一些混乱,人们认为,尽管将no
readonly
设置为true等,但仍然说不能被覆盖


因此,如果从命令行重写,请尝试查看您设置的属性是否实际使用了所需的值。

您完全可以在NAnt 0.85中执行此操作。例如,您有一个名为“myvalue”的属性“您希望能够从命令行传入。首先在NAnt脚本中定义属性,如下所示:

<property name="myvalue" value="0" overwrite="false" />
nant.exe buildfile:myfile.build -logfile:mylog.log -D:myvalue=16
<echo message="myvalue: ${myvalue}" />
您的新值“16”将在您的构建脚本中被识别,您可以通过如下方式简单地回显该值进行测试:

<property name="myvalue" value="0" overwrite="false" />
nant.exe buildfile:myfile.build -logfile:mylog.log -D:myvalue=16
<echo message="myvalue: ${myvalue}" />

有关更多信息,您可以阅读文档并查看示例“iv”:


在NAnt 0.85中完全可以做到这一点。例如,假设您有一个名为“myvalue”的属性,您希望能够从命令行传入该属性。首先在NAnt脚本中定义属性,如下所示:

<property name="myvalue" value="0" overwrite="false" />
nant.exe buildfile:myfile.build -logfile:mylog.log -D:myvalue=16
<echo message="myvalue: ${myvalue}" />
您的新值“16”将在您的构建脚本中被识别,您可以通过如下方式简单地回显该值进行测试:

<property name="myvalue" value="0" overwrite="false" />
nant.exe buildfile:myfile.build -logfile:mylog.log -D:myvalue=16
<echo message="myvalue: ${myvalue}" />

有关更多信息,您可以阅读文档并查看示例“iv”:


使用,除非属性有效

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


然后像往常一样使用nant-D:msbuild.path=…

使用,除非属性有效

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


然后像往常一样nant-D:msbuild.path=…

显示一些示例代码,以及如何重写等。另外,请尝试nant 0.90或0.91_alpha,您使用的是2006年发布的版本!我没有任何命令行属性。我从Cruisecontrol.net运行这个nant构建。属性在一个文件中,我使用include标记包含这些属性。尽管我没有将这些属性指定为只读,但当它们包含在构建文件中时,它将作为只读包含。然后,我尝试将包含属性的include文件的内容移动到同一个nant构建文件中。但不知道它在哪里设置属性:(.显示一些示例代码,如何重写等。另外,请尝试NAnt 0.90或0.91_alpha,您使用的是2006年发布的版本!我没有任何命令行属性。我从Cruisecontrol.net运行此NAnt构建。这些属性位于一个文件中,我使用include标记包含这些属性。尽管我没有将这些属性指定为re仅ad,当它们包含在生成文件中时,它将以只读方式包含。然后我尝试将包含文件中具有属性的内容移动到同一nant生成文件中。但不知道在何处设置属性:(。