2016-04-14 11 views
1

In meinem NAnt Skript habe ich eine Eigenschaft:aktualisieren in einem Skript

<property name="changed.assemblyinfo" value="false" unless="${property::exists('changed.assemblyinfo')}" /> 

Die Eigenschaft kann von der Kommandozeile wie unter den -D Schalter eingestellt werden, der gut arbeitet:

-D:changed.assemblyinfo=true 

Ich möchte jedoch in der Lage sein, die Eigenschaft innerhalb des Skripts selbst zu aktualisieren, abhängig von einer Logik im Skript, dh:

<property name="changed.assemblyinfo" value="true" /> 

jedoch jedes Mal, wenn ich dies tun, erhalte ich die Fehlermeldung:

Read-only property "changed.assemblyinfo" cannot be overwritten

Wie kann ich aus dem Skript eine Eigenschaft festgelegt?

Antwort

1

Wenn Sie eine Eigenschaft in der Befehlszeile übergeben, wird sie als schreibgeschützte Eigenschaft behandelt. Von 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" /> 

Das bedeutet, dass Sie nicht in der Lage sind, sie zu aktualisieren. Wenn Sie beide in der Lage sein müssen, sie von der Befehlszeile aus zu liefern und sie abhängig von der Logik zu aktualisieren, müssen Sie in der Befehlszeile einen Standardwert angeben, der einen anderen Namen verwendet, zB:

<property name="changed.assemblyinfo.default" value="false" unless="${property::exists('changed.assemblyinfo.default')}" /> 
<property name="changed.assemblyinfo" value="${changed.assemblyinfo.default}" /> 

jetzt changed.assemblyinfo enthält entweder den Standardwert von changed.assemblyinfo.default oder den Wert auf der Kommandozeile übergeben so, während Sie es als normal frei sind zu überschrieben:

<property name="changed.assemblyinfo" value="true" /> 
+1

Danke für die Info, sehr prägnant. – gisWeeper

Verwandte Themen