NAntメーリング リスト で古いスレッドを見つけましたが、これは実際に (私の場合) 回避策の最良の提案を提供します。<property>
これは、タスクが期待どおりに機能するという事実に基づいています。この回避策では、元のプロパティが定義されているかどうかに応じて、設定する追加のプロパティが導入されます。
このような:
<target name="example">
<property name="arg.value" value="${arg}" if="${property::exists('arg')}" />
<property name="arg.value" value="" unless="${property::exists('arg')}" />
<exec program="program.exe">
<arg value="${arg.value}" />
</exec>
</target>
私の場合、プロパティを常にデフォルト値で設定し、追加のプロパティを導入しない方が簡単であることがわかりました-元のプロパティをに渡すだけ<arg/>
です:
<target name="example">
<property name="arg.value" value="default value" overwrite="false" />
<exec program="program.exe">
<arg value="${arg.value}" />
</exec>
</target>
他のインクルードファイルで上書きできます(上書きされます)。
同じ質問がされている別のスレッドも見つけました。NAnt の開発に携わっている人は、この問題を修正するためのパッチに関心があるかどうかを<arg>
要素に示すよう提案しました。私が見る限り、誰も興味を示しませんでした:)、したがって、動作は変更されませんでした。
私は修正が何であるかを調査するために少し時間を費やすことができました。それは、たとえばタスクのプロパティに追加ExpandProperties=false
することだけのようです。期待どおりに機能する属性についても同じことが行われます。しかし、私はそれを試していませんでした - もし私が最近もう少し時間があれば、私はここにアップデートを投稿します.TaskAttribute
line
<arg>
<property value="...">