【问题标题】:Using Conditional Symbol inside .csproj在 .csproj 中使用条件符号
【发布时间】:2014-08-22 22:01:47
【问题描述】:

.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 是什么?

【问题讨论】:

  • 找到答案...

标签: visual-studio msbuild


【解决方案1】:

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

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

【讨论】:

  • 谢谢,当我有两种配置时,它解决了我的问题。一个用于调试,第二个用于发布,当在项目的“条件编译符号”构建页面上定义常量时,可以为这两种情况使用一个条件。不必这样做: Condition="'$(Configuration)' == 'TEST Debug' OR '$(Configuration)' == 'TEST Release'" 但 Condition="$(DefineConstants.Contains('TEST' ))"。
【解决方案2】:

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

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

已编辑:尖括号已消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2013-12-27
    • 2013-10-19
    • 2017-07-15
    • 2012-01-09
    • 1970-01-01
    相关资源
    最近更新 更多