首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么‘`Condition`’属性不适用于‘`ItemGroup`’元素?

为什么‘`Condition`’属性不适用于‘`ItemGroup`’元素?
EN

Stack Overflow用户
提问于 2015-03-04 09:54:35
回答 1查看 12K关注 0票数 24

2013。

WhenItemGroup元素都可以具有Condition属性(正如我在MSDN中看到的那样)。但我得到了不同的结果。

$(CAD_Year)在2015年时,我预计AcRibbon将是而不是引用到我的项目的

代码语言:javascript
复制
<ItemGroup Condition= "'$(CAD_Year)' &lt; '2010'" >    
  <Reference Include="AcRibbon">
    <HintPath>$(CAD_SDK_Location)\$(Inc)\AcRibbon.dll</HintPath>
    <Private>False</Private>
  </Reference>
</ItemGroup>

但是,我总是在解决方案浏览器中获得未解决的AcRibbon引用。

但是这个变体工作得很好:

代码语言:javascript
复制
<Choose>
  <When Condition= "'$(CAD_Year)' &lt; '2010'">
    <ItemGroup>
      <Reference Include="AcRibbon">
        <HintPath>$(CAD_SDK_Location)\$(Inc)\AcRibbon.dll</HintPath>
        <Private>False</Private>
      </Reference>
    </ItemGroup>
  </When>
</Choose>

在这种情况下,只有当AcRibbon小于2010年时才引用$(CAD_Year)。为什么我会得到不同的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-05 09:58:41

我在MSDN 这里中找到了答案

虽然条件导入语句在命令行MSBuilds中工作,但它们在Visual集成开发环境(IDE)中不使用MSBuild。条件导入是通过使用加载项目时设置的配置和平台值来计算的。如果随后进行的更改需要重新计算项目文件中的条件(例如,更改平台),则Visual将重新评估属性和项的条件,而不是导入条件。由于未重新计算导入条件,因此将跳过导入。要解决这个问题,请将条件导入放在.targets文件中,或者将代码放在条件块中,例如选择元素(MSBuild)块。

我认为ItemGroup元素也是如此.

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28851338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档