5
在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)」。 – 2012-03-05 06:49:17
如果沒有文件記錄,你根本不應該使用它。 – 2012-03-05 06:54:42
我在思考和「研究」這件事。它看起來像「!(」對於MSBuild來說是有意義的,除了純文本,當然是用作條件屬性中的「not-operator」。例如:'Condition =「!('$( foo)'=='1')「'這是否可能,您是否使用了一些自定義工具,預處理或類似將」!(TargetPath)「解釋爲其他內容然後是純文本? – 2012-03-06 08:11:39