在.csproj中使用条件符号

时间:2014-08-22 22:01:48

标签: visual-studio msbuild

在.csproj中有一些常量定义如下:

<DefineConstants>DEBUG;TRACE;ANDROID;GLES;OPENGL;OPENAL</DefineConstants>

然后在项目后面有一个项目组

<ItemGroup>
<EmbeddedNativeLibrary Include="..\ThirdParty\Dependencies\openal-soft\libs\armeabi-v7a\libopenal32.so">
  <Platforms>Android,Ouya</Platforms>
  <Link>libs\armeabi-v7a\libopenal32.so</Link>
</EmbeddedNativeLibrary>
<EmbeddedNativeLibrary Include="..\ThirdParty\Dependencies\openal-soft\libs\armeabi\libopenal32.so">
  <Platforms>Android,Ouya</Platforms>
  <Link>libs\armeabi\libopenal32.so</Link>
</EmbeddedNativeLibrary>
<EmbeddedNativeLibrary Include="..\ThirdParty\Dependencies\openal-soft\libs\x86\libopenal32.so">
  <Platforms>Android,Ouya</Platforms>
  <Link>libs\x86\libopenal32.so</Link>
</EmbeddedNativeLibrary>

我希望仅在定义常量OPENAL时才包含此ItemGroup,无论调试或发布如何。我怎么能这样做?

<ItemGroup Condition="XXXXXX" >

XXXXXX会是什么?

2 个答案:

答案 0 :(得分:5)

检查是否定义了Constant的条件的语法是:(在本例中为OPENAL)

<ItemGroup Condition="$(DefineConstants.Contains('OPENAL'))">

答案 1 :(得分:1)

您还可以使用<Choose>元素在msbuild / .csproj文件中创建条件块 如果你想做更复杂的条件处理。

http://msdn.microsoft.com/en-us/library/ms164282.aspx

编辑:尖括号已经消失。