MSBuild条件IsDebug

12

我该如何在MSBuild的.targets文件中确定项目是以调试模式(还是发布模式)构建的,并将此信息用作另一个属性的条件?

类似于:

<OutDir Condition="IsDebug">bin\Debug\$(SomeOtherProperty)\</OutDir>
<OutDir Condition="!IsDebug">bin\Release\$(SomeOtherProperty)\</OutDir>

是否存在Debug/Release模式,还是它们只是不同配置属性值的传统名称?

1个回答

21

“Debug/Release”或其他都只是Configuration属性的惯例值。

因此,只要包含/调用您的 .targets 文件的项目遵守惯例,您可以按如下方式检查调试模式:

<OutDir>bin\Release\$(SomeOtherProperty)\</OutDir>
<OutDir Condition=" '$(Configuration)' == 'Debug' ">bin\Debug\$(SomeOtherProperty)\</OutDir>

或者你可以直接使用那个变量:

<OutDir>bin\$(Configuration)\$(SomeOtherProperty)\</OutDir>

问题在于我有8个配置,一半是调试版本,一半是发布版本。它们的名称当然不是“Debug”或“Release”,但按照惯例,我已经将它们命名为“Debug <something>”、“Debug <somethingElse>”等等。所以,我可能会使用包含检查而不是等于检查,对吧? - Thanasis Ioannidis
1
没错。根据您的目标文件的复杂程度,引入您示例中的 IsDebug 属性或具有 DebugRelease 值的 ConfigurationType(或类似)属性可能会很有用。 - Thomas Gerstendörfer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接