在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>

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

任何帮助,不胜感激!

最佳答案

刚刚重写了我们的构建过程,我可以诚实地说我从未使用过!引用任何东西,我用过的所有字符都是 bool 运算符中的“NOT”。

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

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

关于c# - MSBuild属性引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9561514/

10-10 00:53