为什么在Release版本中没有检测到条件编译符号?

时间:2012-03-07 12:37:39

标签: visual-studio-2010 msbuild

我有一个WPF解决方案,其中包含一个带有WPF和Silverlight代码的子项目组件。如果定义了“WPF”条件编译符号,则构建WPF代码,如果未定义,则构建Silverlight代码。这适用于我的Debug构建就好了。但是,当我尝试进行发布版本时,构建不会检测到“WPF”符号,因为它会错误地编译silverlight代码,我会得到一个无效的构建版本。任何想法为什么WPF符号没有被构建检测到?

以下是.csproj的相关部分。请注意,“Debug”和“发布”的DefineConstants中定义了“WPF”符号,但在发布版本中未检测到它。有人可以帮忙吗?

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug\</OutputPath>
  <DefineConstants>TRACE;DEBUG;WPF</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
  <NoWarn>1607</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DebugType>pdbonly</DebugType>
  <Optimize>true</Optimize>
  <OutputPath>bin\Release\</OutputPath>
  <DefineConstants>TRACE;WPF</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>

2 个答案:

答案 0 :(得分:0)

从我读过的内容来看,我认为您可能需要更新构建定义以包含以下内容:

/p:DefineConstants="WPF"

这是在Process&gt;下的Build定义中。高级&gt; MSBuild Arguments。

答案 1 :(得分:0)

确保为所有配置DEBUG和RELEASE以及您可能拥有的任何其他配置指定了定义。