Visual studio 2012 有条件地从Visual Studio生成中排除项目

Visual studio 2012 有条件地从Visual Studio生成中排除项目,visual-studio-2012,msbuild,Visual Studio 2012,Msbuild,我有一个Visual Studio 2012库项目(VC++),如果某个SDK可用,它包含某些类。我通过属性表中的msbuildConditions实现了这一点: <Choose> <When Condition="Exists('C:\OFED_SDK\')"> <PropertyGroup> <OfedSdkDir>C:\OFED_SDK\</OfedSdkDir> &

我有一个Visual Studio 2012库项目(VC++),如果某个SDK可用,它包含某些类。我通过属性表中的msbuild
Condition
s实现了这一点:

<Choose>
    <When Condition="Exists('C:\OFED_SDK\')">
        <PropertyGroup>
            <OfedSdkDir>C:\OFED_SDK\</OfedSdkDir>
        </PropertyGroup>
    </When>
 </Choose>
 [...]
 <ItemDefinitionGroup Condition="$(OfedSdkDir) != ''">
     <ClCompile>
          <AdditionalIncludeDirectories>$(OfedSdkDir)Inc\; %(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
          <PreprocessorDefinitions>HAVE_OFED_SDK; %(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
 [...]

C:\OFED_SDK\
[...]
$(OfedSdkDir)公司\;%(其他包括董事)
拥有OFED SDK;%(预定义)
[...]
某些功能仅在定义了
HAVE_of ed_SDK
时可用。这很好用

该解决方案还包含几个用于测试库项目的项目。有条件编译的类的测试在单独的项目中

我的问题是:我能否根据上述条件
(condition=“$(OfedSdkDir)!=”
是否为
true
?如果是,我将如何做?我需要一个在从VS构建时也能工作的解决方案

编辑:我知道Martin提出的解决方案,但我正在寻找一种以编程方式工作的解决方案,即不允许用户通过GUI启用“错误”配置


编辑:我发现我可以添加
(条件=“$(OfedSdkDir)!=''
到源文件的
ClCompile
,它几乎达到了我想要的效果,但仍然运行项目的构建过程。

只需设置一个不同的解决方案配置,它不会尝试构建要排除的相关项目


例如,将其称为“Release No of ed”,并取消勾选那些在该配置中编译的项目。

我知道这种可能性,但我正在搜索一种无法在UI中“覆盖”的解决方案。