MSBuild PreBuildEvent/PostBuildEventイベント中の$(TargetPath)や!(TargetPath)などのプロパティ参照の違いは何ですか? 。「!(」私はこれは私が見つけることができるように見える最も近いMSBuildプロパティの参照
http://msdn.microsoft.com/en-us/library/bb383819.aspx 彼らはいくつかの状況で異なる動作をするが、私は、フォーム上の任意のドキュメントを見つけることができないことがわかり
例:。
<Target Name="BeforeBuild">
<CreateProperty Value="NewValue">
<Output TaskParameter="Value" PropertyName="TargetPath" />
</CreateProperty>
</Target>
<PropertyGroup>
<PreBuildEvent>
echo $(TargetPath)
echo !(TargetPath)
</PreBuildEvent>
</PropertyGroup>
は、元TargetPathがエコーして、「NEWVALUEを」エコー。しかし、これは私が定義されている他のプロパティでは動作しませんでしょう。
感謝すべてのヘルプ!
興味深い。この現象を示す完全なprojファイルを投稿できますか?サンプル "ConsoleApplication1.csproj"を拡張して再現しようとしましたが、できませんでした。 'echo(TargetPath)'は単に "!(TargetPath)"を出力します。 –
何かが文書化されていない場合は、まったく使用しないでください。 –
私はこれについて熟考し、「研究」していました。これは唯一の時間のように見える "!("はMSBuildにとって意味があるのはもちろんのこと、プレーンテキスト以外は 'Condition'属性の" not-operator "として使用されます)例:' Condition = "!( '$( foo) '==' 1 ') "' '!(TargetPath)」を何か他のものとして解釈してプレーンテキストとするカスタムツールや前処理などを使用することは可能ですか? –