MSBuild属性参考

use*_*013 5 c# msbuild properties

在MSBuild PreBuildEvent/PostBuildEvent事件期间,$(TargetPath)和!(TargetPath)之类的属性引用有什么区别?我发现它们在某些情况下的工作方式不同,但我找不到任何关于"!("形式的文档.

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>
Run Code Online (Sandbox Code Playgroud)

将回显原始TargetPath,然后回显"NewValue".但是,这对我定义的其他属性不起作用.

任何帮助非常感谢!

kry*_*our 1

刚刚重写了我们的构建过程,我可以诚实地说我从未使用过!要引用任何内容,我使用这个字符的全部目的就是像布尔运算符中那样表示“NOT”。

事实上,我在文档中的任何地方都找不到这种用法,也无法重现您所描述的行为。

我强烈怀疑这不是引用任何内容的有效/受支持的语法。